删除匹配行的最后一个分号

时间:2018-05-08 13:00:24

标签: bash sed

我有一个包含多行的文件。像这样:

Session
PKG_TEST
Call: command(parameter);
Error: error message
end of log;
Session2
PKG_TEST2
Call: command2(parameter2);
Error: error message
end of log;

我需要删除以Call开头的每一行末尾的分号。

我知道如何找到以Call开头的每一行/^Call.*/,但是如果不删除文件中的每个分号,就无法在一个sed命令中创建所有内容。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

要仅在与模式匹配的行上运行替换,您可以将替换附加到地址:

sed '/^Call/s/;$//' infile

检查您的行是否与^Call匹配,如果匹配,则会执行s/;$//,这会删除一个尾随分号。