Awk
如何使用 Unix Shell 僅顯示前 n 列和後 n 列?
我有很多 csv 文件。最初的設計應該有五列。
我剛剛發現 csv 文件的中間列有一個字元串,其中包含任意數量的逗號,並且沒有正確引用。這導致行具有任意數量的列。
如何獲取這些 csv 文件的前兩列和最後兩列?
由於逗號的數量可以逐行更改,我需要一種方法來指定前兩列和最後兩列。
awk -F, '{print $1, $2, $(NF-1), $NF}' < input
更一般地說(根據問題的標題),列印輸入的第一列和最後一
n
列 - 不檢查這是否意味著列印某些列兩次 -awk -v n=2 '{ for(i=1; i <= n && i <= NF; i++) printf "%s%s", $i, OFS for(i=NF-n+1; i <= NF && i >= 1; i++) printf "%s%s", $i, OFS printf "%s", ORS }' < input
(
-F
根據需要使用分隔符)
perl:
echo a,b,X,X,X,X,c,d | perl -F, -slane 'print join ",", @F[0..$n-1, -$n..-1]' -- -n=2
a,b,c,d