我有一个这样的文件:
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
我想.
用逗号替换第二列中的所有点,
,就像sed 's/\./\,/g' file
我如何使用sed
或最好awk
仅将其应用于第二列一样,所以我的输出将如下所示:
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)
对于每个输入行,将.
第二个字段中的所有内容替换为,
1
是打印内容$0
(包含输入记录)的 awk 习惯用法
答案2
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