[英]How to swap and remove columns using awk without getting newlines and whitespace?
例如,下面的.csv以';'分隔。
我需要交換2列和/或刪除一些列。
col1row1; col2row1; col3row1
col1row2; col2row2; col3row2
col1row3; col2row3; col3row3
...
列的數量不是固定的,我需要交換的列可以不同。
我用過awk'BEGIN {FS =“;”; OFS =“;”} {print $ 3,$ 1}' ,但是如果交換列之一是最后一個,它會添加換行符
col3row1
; col1row1
col3row2
; col1row2
col3row3
; col1row3
...
或空格,例如{print $ 2,$ 1,$ 3}
col2row1; col1row1; col3row1
col2row2; col1row2; col3row2
col2row3; col1row3; col3row3
...
您的輸入文件包含Control-M。 運行dos2unix
或類似的命令將其刪除。
awk -F ";" '{printf("%s;%s;%s\n", $2, $1, $3)}'
編輯:或與sed:
sed -r 's/^([^;]*);([^;]*);([^;]*)/\3;\2;\1/'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.