[英]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
顯然,上面的腳本測試了行和列。 但我還想循環到第二、第三和第四個字段,如果第一個字段不存在,如果第二個字段不存在,則測試第三個字段,直到第四個字段。
我認為您真正想做的是逐行而不是逐字閱讀文件。 你可以用while
和read
來做到這一點。 像:
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.