各行の下部にn番目の文字列を置き換えます。

各行の下部にn番目の文字列を置き換えます。

sedを使用して、指定されたファイルの各行で最後の文字のN番目の項目を置き換える方法は?

;この場合、最後から3番目を次に変更したいと思います。,

入力する

1;2;3;4;5;6;7;8;9
10;20;30;40;50;60;70;80;90
100;200;300;400;500;600;700;800;900

期待される出力

1;2;3;4;5;6,7;8;9
10;20;30;40;50;60,70;80;90
100;200;300;400;500;600,700;800;900

6番目のアイテムをこのように変更できることを知っています。

sed 's/;/,/6' input_file.csv > output_file.csv

または最後

sed -r 's/(.*);/\1,/' input_file.csv > output_file.csv

しかし、私の特別なケースでは、わずかなニュアンスのために最後から始める必要があります。

私は次のことを試しました

sed -r 's/(.*);/\1,/3' input_file.csv > output_file.csv

ベストアンサー1

単に行を反転し、N番目の発生位置を変更してから、反転することができます。

 rev file | sed 's/;/,/3' | rev

おすすめ記事