用awk交换两列

时间:2014-04-02 14:46:19

标签: sed awk

我尝试在文本文件中交换两列,字段分隔符是管道' |'登录。

我发现并尝试了

awk ' { t = $1; $1 = $2; $2 = t; print; } ' input_file

当字段分隔符为选项卡时,它可以正常工作。

我也试过

awk -F\|  '{print $2 $1 }' input_file

但我无法指定' |'作为输出字段分隔符。

1 个答案:

答案 0 :(得分:5)

您需要定义OFS,输出字段分隔符。您可以使用以下任一方式执行此操作:

awk 'BEGIN{FS=OFS="|"} {t=$1; $1=$2; $2=t; print} ' input_file

awk -v OFS="|" -v FS="|" ' {t=$1; $1=$2; $2=t; print} ' input_file

或(thanks Jaypal!)

awk '{t=$1; $1=$2; $2=t; print}' OFS="|" FS="|" input_file