1. ホーム
  2. bash

cutコマンドで複数の列を削除する

2023-08-03 01:15:18

質問

与えられた入力

 echo 1,2,3,4,5,6,7,8,9,...100 

5列目をカットしたい場合は、次のようにします。

cut -d, -f-4,6-.

5,7などの連続しない複数の列をカットしたい場合はどうしたらよいでしょうか? ワンライナーはないのでしょうか?

どのように解決するのですか?

既存の -f 仕様の中で、直接シーケンスを続けることができるはずです。

5と7の両方を省略する場合は、試してみてください。

cut -d, -f-4,6-6,8-

シーケンシャルカラムを1つスキップしているので、これは次のようにも書けます。

cut -d, -f-4,6,8-

続けて、5,7,11を飛ばしたい場合は、以下のようになります。

cut -d, -f-4,6-6,8-10,12-

もっとわかりやすく言うと、シーケンスリストの先頭と末尾にそれぞれ開始/終了カラムを使うとイメージしやすくなります。例えば、以下のようにすると、5列目と11列目をスキップして、2列目から20列目までが表示されます。

cut -d, -f2-4,6-10,12-20

つまり、これは "2 から 4" を表示し、5 をスキップし、 "6 から 10" を表示し、11 をスキップし、そして "12 から 20" を表示することになります。