Awk-特定の列の1文字のみを置き換えます

次のようなファイルがあります:

2018.01.02;1.5;comment 1 2018.01.04;2.75;comment 2 2018.01.07;5.25;comment 4 2018.01.09;1.25;comment 7 

iv id = “の場合と同様に、2番目の列のすべてのドット.をカンマ,に置き換えます。 1a70be4712 “>

sedまたはできればawkを使用して、これを2番目の列にのみ適用するにはどうすればよいですか?次のようになります。

2018.01.02;1,5;comment 1 2018.01.04;2,75;comment 2 2018.01.07;5,25;comment 4 2018.01.09;1,25;comment 7 

回答

$ awk "BEGIN{FS=OFS=";"} {gsub(/\./, ",", $2)} 1" ip.txt 2018.01.02;1,5;comment 1 2018.01.04;2,75;comment 2 2018.01.07;5,25;comment 4 2018.01.09;1,25;comment 7 
  • BEGIN{}このコードブロックは、入力行を処理する前に実行されます
  • FS=OFS=";"入力および出力フィールドの区切り文字を;
  • gsub(/\./, ",", $2)として設定し、すべてのividを置き換えます,
  • 1の2番目のフィールドの= “ca58471716″>

は、印刷するためのawkイディオムです続き$0(入力レコードを含む)のエントリ

回答

sed "s/\./,/3" file 

ドットの3番目の出現箇所を置き換えます

回答

実行者以下のawkを使用したメソッド

コマンド:awk -F ";" "{gsub(/\./,",",$2);print $1";"$2";"$3}" filename

出力

2018.01.02;1,5;comment 1 2018.01.04;2,75;comment 2 2018.01.07;5,25;comment 4 2018.01.09;1,25;comment 7 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です