特定の列を編集するには、sedまたはawkを使用してください。

特定の列を編集するには、sedまたはawkを使用してください。

次のCSVファイルがあります。

qw12er,foo,0 bn5mgh
rt8yp,foo,10 gh78jk
bn852mv,foo,852 78ghjkh
tgbr,foo,10 ujmyhn
wsx2d,foo,0000 ui52ohn
tgbr,foo,7418529 ujmyhn
ikl896o,foo,22 wsxdc52

3番目の列を修正し、3番目の列の先頭のすべての数字とスペースを削除したいと思います。

その後、出力は次のようになります。

qw12er,foo,bn5mgh
rt8yp,foo,gh78jk
bn852mv,foo,78ghjkh
tgbr,foo,ujmyhn
wsx2d,foo,ui52ohn
tgbr,foo,ujmyhn
ikl896o,foo,wsxdc52

ベストアンサー1

別の解決策は、次のものを使用することawkです。sub:

awk -F, 'sub("^[0-9]+\\s","",$3)' OFS=, file 

出力:

qw12er,foo,bn5mgh
rt8yp,foo,gh78jk
bn852mv,foo,78ghjkh
tgbr,foo,ujmyhn
wsx2d,foo,ui52ohn
tgbr,foo,ujmyhn
ikl896o,foo,wsxdc52

説明する:

  • -F,:入力フィールド区切り文字でカンマを設定します。

  • OFS=,:出力フィールド区切り文字でカンマを設定します(デフォルトは空白)。

  • sub("^[0-9]+\\s","",$3):文字列の先頭の数字とスペースを削除し、$3現在の行を印刷します(「印刷」がデフォルトの動作であるためawk)。

これにより、必要な列を編集し、他のすべての列(多くの場合があります)を印刷できます。

おすすめ記事