我正在尝试执行以下操作:
>逐行读取文件.
>每行具有以下结构:field1; field2; field3
>使用awk分隔这些字段中的每一个,然后进一步处理这些字段
我的代码片段是:
while read l do n=`echo ${l} | awk --field-separator=";" '{print NF}'` field1=`echo ${l} | awk --field-separator=";" '{print $1}'` field2=`echo ${l} | awk --field-separator=";" '{print $2}'` field3=`echo ${l} | awk --field-separator=";" '{print $3}'` echo ${n} ${field1} ${field2} ${field3} done < temp
其中temp仅包含以下行:
xx;yy;zz
我在命令行上得到的答案是:
1 xx;yy;zz
我不确定我理解这个输出.任何解释都会很好,因为它确实适用于其他文件.我正在使用Mac,而此代码在bash脚本中使用awk.
你的awk不知道是什么–field-separator =“;”当你这样做时意味着:
awk --field-separator=";" '{print $1}'
你的awk仍然使用空格的默认FS,所以$1包含你的整个输入行,而$2和$3是空的.使用-F’;’设置FS.
你是如此,在如何编写你想要的脚本方面做得不好.如果您告诉我们更多关于“处理每个领域”的内容,我们可以帮助您.