
次の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
)。
これにより、必要な列を編集し、他のすべての列(多くの場合があります)を印刷できます。
答え2
私は以下を使用しましたawk
:
awk -F"[ ,]" '{print $1","$2","$4 }' yourfile
結果:
qw12er,foo,bn5mgh
rt8yp,foo,gh78jk
bn852mv,foo,78ghjkh
tgbr,foo,ujmyhn
wsx2d,foo,ui52ohn
tgbr,foo,ujmyhn
ikl896o,foo,wsxdc52
答え3
存在するawk
:
awk '{FS="[, ]"; OFS=","; print $1, $2, $4}' filename
存在するsed
:
sed 's/^\(.*,\)[0-9]* \([^,]*\)$/\1\2/' filename
答え4
表示されるデータによっては、次のようになります。sed
sed -r 's/,[0-9 ]+ /,/' file.csv
データが変更されると、正規表現をより強力に変更する必要があります。