SampleFile
:
Two Words,Extra
我的代码:
cat SampleFile | awk -F "," '{print $1" "$2}' | while read var1 var2;
do
echo $var1
done
这将只打印Two
而var2
将打Words
。有没有办法可以将Two Words
传递给var1
?
答案 0 :(得分:3)
你不必为此使用awk。 Bash有一个内置变量来确定单词的分割位置:
while IFS=, read -r var1 var2; do
echo "$var1"
done < SampleFile
IFS
设置为,
,因此分词会以逗号进行。
我使用重定向而不是管道到while
循环,而不是产生子shell。
一句话:在这种情况下你不需要cat
。 awk可以将文件名作为参数,所以
cat SampleFile | awk -F "," '{print $1" "$2}'
变为
awk -F "," '{print $1, $2}' SampleFile
此外,使用print
时,您不需要明确地引入空格:如果您用逗号分隔字段,awk将用OFS
的值替换逗号(输出)字段分隔符)变量,默认为空格。
答案 1 :(得分:0)
...| while read var1; do echo $var1 done