Unixでは、カンマ区切りのファイル内の特定の場所にある文字と数字を削除します。

Unixでは、カンマ区切りのファイル内の特定の場所にある文字と数字を削除します。

Unixでは、カンマ区切りのファイルの特定の場所から文字と数字を削除したいと思います。

私のデータはこんな感じです

jagan1,*,*,*,*,*,W,24,25,26
jagan2,*,*,*,*,*,1,24,25,26
jagan3,*,*,*,*,*,*,24,25,26
jagan4,*,*,*,*,*,P,24,25,26
jagan5,*,*,*,*,*,*,24,25,26

7番目の位置では*だけを保持し、数字や文字があれば行全体を削除したいと思います。

次のように出力

jagan3,*,*,*,*,*,*,24,25,26
jagan5,*,*,*,*,*,*,24,25,26

ベストアンサー1

簡単にawkスクリプト:

$ awk -F, '$7 == "*"' file.csv
jagan3,*,*,*,*,*,*,24,25,26
jagan5,*,*,*,*,*,*,24,25,26

  • -F,-,入力フィールド区切り文字で(カンマ)を設定します。
  • '$7 == "*"' - 7番目のフィールドは次の行のみを考慮します。*

消す不要行は以下を使用sed方法:

$ sed -Ei '/^([^,]+,){6}[^*],/d' file.csv

おすすめ記事