次のようなファイルがあります:
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