我正在尝试对包含多个具有条件的多个列(字段)的行的文件执行循环。
以下是示例文件(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
显然,上面的脚本会测试行和列。但是如果第一个字段不存在,如果第二个字段不存在,我还想循环到第二个,第三个和第四个字段,测试第三个字段,直到第四个字段。
答案 0 :(得分:10)
我认为你真正想做的是逐行读取文件而不是逐字逐句。您可以使用while
和read
执行此操作。像:
while read field1 field2 field3 field4; do
if [ -e "$field1" ]; then
something
elif [ -e "$field2" ]; then
...
fi
done < file.txt
答案 1 :(得分:1)
这个作品给我看专栏,我觉得可以适用于你的case。
while read field1 field2 field3 field4; do
echo $field1 $field2 $field3 $field4
done < file.txt | awk '{ print $1,$2,$3,$4 }'