awk - 列内の1文字のみを置き換える

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

.2番目の列のすべての点を使い方,と同じコンマで置き換えるか、2番目の列に適用して出力を次のように表示したいと思います。sed 's/\./\,/g' filesedawk

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

答え1

$ 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)各入力ラインについて、.2番目のフィールドのすべての内容を次に置き換えます。,
  • 1コンテンツ印刷(入力レコードを含む)$0のawk慣用語。

答え2

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

3番目に現れる点を変える

答え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

関連情報