如何使用awk交换和删除列而不获取换行符和空格?

时间:2016-12-17 21:47:25

标签: linux bash unix awk

例如,我跟随.csv分隔的.csv 我需要交换2列和/或删除一些。

col1row1; col2row1; col3row1
col1row2; col2row2; col3row2
col1row3; col2row3; col3row3
...

列号不固定,我需要交换的列可以不同。
我使用了 awk'BEGIN {FS =“;”; OFS =“;”} {print $ 3,$ 1}',但如果其中一个交换列是最后一个像< BR />

col3row1
; col1row1
col3row2
; col1row2
col3row3
; col1row3
...

或像 {print $ 2,$ 1,$ 3}

的空格

col2row1; col1row1; col3row1
col2row2; col1row2; col3row2
col2row3; col1row3; col3row3
...

2 个答案:

答案 0 :(得分:1)

您的输入文件包含control-Ms。运行dos2unix或类似内容将其删除。

答案 1 :(得分:0)

awk -F ";" '{printf("%s;%s;%s\n", $2, $1, $3)}'

编辑:或者使用sed:

sed -r 's/^([^;]*);([^;]*);([^;]*)/\3;\2;\1/'