我正在尝试处理包含两个字段分隔符;
和space
的输入。我可以使用以下方法用一个分隔符解析输入:
echo "10.23;7.15;6.23" | awk -v OFMF="%0.2f" 'BEGIN{FS=OFS=";"} {print $1,$2,$3}'
10.23;7.15;6.23
对于带有两个分隔符的输入,我尝试了这个并且它没有解析两个分隔符:
echo "10.23;7.15 6.23" | awk -v OFMF="%0.2f" 'BEGIN{FS=OFS=";" || " "} {print $1,$2,$3}'
答案 0 :(得分:3)
您想将FS设置为字符列表:
awk -F'[; ]' 'script' file
和您尝试设置的另一个内置变量名为OFMT
,而不是OFMF
:
$ echo "10.23;7.15 6.23" | awk -F'[; ]' -v OFMT="%0.2f" '{print $1,$2,$3}'
10.23 7.15 6.23
$ echo "10.23;7.15 6.23" | awk 'BEGIN{FS="[; ]"; OFS=";"; OFMT="%0.2f"} {print $1,$2,$3}'
10.23;7.15;6.23