在awk中转置两个字段

时间:2011-10-14 02:25:16

标签: awk

假设文件如下:

a|b|c|d
a|b|c|d
...
a|b|c|d

如何转置两个字段,例如:

c|b|a|d
c|b|a|d
...
c|b|a|d

提前致谢!

3 个答案:

答案 0 :(得分:4)

这是另一种解决方案:交换第一个和第三个字段,然后打印:

awk -F '|' '{ temp=$1; $1=$3; $3=temp; print }' data.txt

答案 1 :(得分:2)

至少如果内存服务,这个一般顺序的东西应该起作用:

BEGIN { FS="|"; }

    { printf("%s|%s|%s|%s\n", $3, $2, $1, $4); }

答案 2 :(得分:2)

杰瑞是'正确的',但有一个更简洁的方法来实现这个目标

awk -F\| '{print $3FS$2FS$1FS$4}' input.csv

FS代表Field Separator你可以把它改成$ 3“”$ 2“”等等。如果它更容易