如何删除linux / unix文件中特定行中间的逗号

时间:2014-03-13 23:58:42

标签: regex linux shell sed comma

有人试图在他们的测试描述中提供帮助。但是,他们在描述中添加了逗号,以便在将测试描述输出到日志文件时,结果会有额外的逗号。这使得解析结果变得很困难,因为结果文件中的逗号数量会有所不同。

我想使用sed并进入测试文件中删除描述中的逗号,这样我们就不会再被咬了屁股,但是我不确定正则表达式应该是什么样的我需要保留其他所有内容并删除逗号。该行来自jmeter jmx文件。

以下是几个示例行:

1个逗号

HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="avgRespTime inst = green, 12 hr" enabled="true">

2个逗号

HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="avgRespTime, inst = network, 2 days" enabled="true">

有人可以给我一个提示,告诉我如何搜索这一行并删除逗号,同时保持其他所有内容完好无损吗?提前感谢您提供的任何帮助。

编辑:jmx文件中可能还有其他行包含逗号,所以我不能盲目地说:

sed -i 's/,//g' file.jmx

2 个答案:

答案 0 :(得分:3)

您可以使用tr删除给定字符串中的所有逗号:

s='HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="avgRespTime, inst = network, 2 days" enabled="true">'
tr -d <<< "$s"

或者在所有包含HTTPSamplerProxy text:

的行中使用sed更改内联
sed -i.bak '/HTTPSamplerProxy/s/,//g' file

答案 1 :(得分:0)

awk应该:

awk '/HTTPSamplerProxy/ {gsub(/,/,"")} 1' file

它会搜索包含HTTPSamplerProxy的行,然后将,替换为任何内容 完成此操作后,1将打印出所有内容。

如果您想将数据写回原始文件,例如sed -i 'code'执行:

awk '/HTTPSamplerProxy/ {gsub(/,/,"")} 1' file > tmp && mv tmp file