替换特定列值中的逗号

替换特定列值中的逗号

我有一个包含 6 列的文件,每个字段用“I”分隔,倒数第二列包含金额字段。

140121059|01/01/201400:00:45|[1390]|[387]|17.64|10
140121060|01/01/201400:00:46|[1112]|[867]|26.46|10
140121062|01/01/201400:00:47|[182]|[13]|4,117.60|10
140121065|01/01/201400:00:48|[1088]|[385]|1,147.04|10

我想从金额列中删除“,”,因为我无法在此列上进行一些操作。 “,”并非出现在所有列中。我正在使用 bash。

答案1

您可以使用awk

$ awk -F'|' '{sub(",","",$(NF-1))}1' OFS='|' file
140121059|01/01/201400:00:45|[1390]|[387]|17.64|10
140121060|01/01/201400:00:46|[1112]|[867]|26.46|10
140121062|01/01/201400:00:47|[182]|[13]|4117.60|10
140121065|01/01/201400:00:48|[1088]|[385]|1147.04|10

$(NF-1)指的是倒数第二个字段,我们只替换该字段中的逗号。

如果您想删除所有字段中的逗号,您可以使用tr

$ <file tr -d ',' > out_file 

答案2

假设您的文件仅在字段中包含逗号amount,您可以使用如下命令。

 sed 's/,//g' filename

答案3

我只想使用 sed:

sed 's/,//g' filename

相关内容