我正试图解析一个文件,就像:
for NAME in `cat file.txt | grep name | awk '{print $2}'`
do
echo " $NAME "
......
done
file.txt内容:
name John box 2
name Joe box 3
name May box 4
然后它将打印:
John
Joe
May
但现在我想同时得到盒子的编号,我需要将名称和盒子存储在两个变量中,如何做到这一点?
预期结果:
echo "$NAME $BOX"
John 2
Joe 3
May 4
这里根本不需要Awk(或cat
!(。
grep '^name' file.txt |
while read -r _ name _ box;
do
echo " $name $box "
......
done
或者,如果你只想打印这两个字段,而不想对这些变量做任何事情,只需
awk '/^name/ { print $2, $4 }' file.txt
另请参阅不要使用for
读取行
更根本的是,您可能希望修改文件格式,这样就不必在每一行都指定标签(或者,如果这真的很有用,可能会使用允许这种结构的标准文件格式,比如JSON或YAML(。