簡體   English   中英

如何在不獲取換行符和空格的情況下使用awk交換和刪除列?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM