csvファイルがたくさんあります。元のデザインには5つの列が必要でした。
私はcsvファイルの中央の列に任意の数のカンマが含まれており、正しく引用されていない文字列があることを発見しました。その結果、列数に関係なく行が生成されます。
このcsvファイルの最初の2列と最後の2列をどのように取得できますか?
カンマの数は行ごとに変更できるため、最初の2つの列と最後の2つの列を指定する方法が必要です。
ベストアンサー1
awk -F, '{print $1, $2, $(NF-1), $NF}' < input
より一般的には、(質問のタイトルに応じて)n
入力の最初の列と最後の列を印刷します。これがいくつかの列を2回印刷するという意味であることを確認せずに -
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
必要に応じて区切り記号を使用してください)