大きなcsvファイルの最初の列で、いくつかの文字列を他の文字列に置き換えたい(たとえば、「GG」を「GGX」、「GG」を「GGX」、「FG」を「FGX」など)。シェルコマンド。
私は私がのようなものが必要であることを知っています
big.csv shell_commands big.csv
でもawkやsedはわかりません
sedを使用すると、「GG」のすべてのインスタンスを「GGX」に置き換えると次のbig.csv
ようになります。
sed 's/^GG/GGX/g' big.csv >big_translated.csv
複数のパターンを置き換える必要がある場合は、セミコロンで区切ったsedで複数のreplaceコマンドを使用できます。
sed 's/^GG/GGX/g; s/^FG/FGX/g' big.csv >big_translated.csv
文字は行の^
始まりを意味し、csvの最初のフィールドのみを編集するようにします。
awk 'BEGIN{ r["GG"] = "GGX"; r["FG"] = "FGX" }
{ for( k in r ) if( gsub( k, r[k], $1 ) break } 1' input-file
休憩は、複数の置換を防ぐためにあります。
これを試してください(文字列が1回だけ出現する場合)
awk '{sub("GG","GGX",$0); sub("FG","FGX",$0); print}' temp.txt
これはどう?
sed -i "s/^\(..\),/\1X,/" big.csv
または、そこにいくつかのスペースがある場合は、次のようにします。
sed -i "s/^\([^ ][^ ][ ]*\),/\1X,/" big.csv