質問: unixシェルを使用して最初のn列と最後のn列のみを表示する方法 多くのcsvファイルがあります。元のデザインには5つの列があるはずでした。csvファイルの中央の列に任意の数のコンマが含まれた文字列があり、適切に引用されていないことがわかりました。これは、任意の数の列を持つ行につながります。これらのcsvファイルの最初の2列と最後の2列だけを取得するにはどうすればよいですか?コンマの数は行ごとに変わる可能性があるため、最初の2列と最後の2列を指定する方法が必要です。
回答: 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を使用)