簡體   English   中英

在 bash 中循環遍歷行和多列

[英]Loop through rows and multiple columns in bash

我正在嘗試對具有多列(字段)和條件的多行文件進行循環。

以下是示例文件 ( file.txt ) 的樣子:

aaa  bbb  ccc
ddd  kkk
fff  ggg  hhh lll
ooo
sss

...等等...

我想編寫一個 bash 腳本,循環遍歷第一個字段的第一行,如果名稱存在,則繼續到第二行。 如果第一個字段的第一行的名稱不存在測試,則測試第二個字段(在這種情況下測試名稱“bbb”),依此類推,直到第四個。 對於給定的行,我有一個可變字段編號,最多有四(4)個字段,最少有一個字段(列)。

for i in cat file.txt; do 
    echo $i
    if [ -e $i ]; then
        echo "name exists"
    else
        echo "name does not exist"
    fi
done 

顯然,上面的腳本測試了行和列。 但我還想循環到第二、第三和第四個字段,如果第一個字段不存在,如果第二個字段不存在,則測試第三個字段,直到第四個字段。

我認為您真正想做的是逐行而不是逐字閱讀文件。 你可以用whileread來做到這一點。 像:

while read field1 field2 field3 field4; do
  if [ -e "$field1" ]; then
     something
  elif [ -e "$field2" ]; then
      ...
  fi
done < file.txt

這個作品適合我看專欄,我覺得可以適用於你的情況。

while read field1 field2 field3 field4; do
    echo $field1 $field2 $field3 $field4
done < file.txt | awk '{ print $1,$2,$3,$4 }'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM