使用 grep 查找模式,然后用 sed 替换

使用 grep 查找模式,然后用 sed 替换

我有以下几行代码

        BalancerMember http://server3:82 status=D
        BalancerMember http://server2:80 status=D

我想搜索端口 82 的条目,然后想删除status=D.所以,它看起来像这样

        BalancerMember http://server3:82

尝试过这个,但这行不通

  grep :82 app.conf | sed -i 's/status=D/ /'
  sed: no input files

我需要-i选项 withsed因为我想在 file 中进行更改。

有什么建议。

答案1

您可以测试完整的 sed 解决方案

sed -i '/:82 /s/status=D//' file

在哪里

  • /:82 /选择带有 82 的行
  • s/status=D/将状态替换为
  • //没有什么。

答案2

根据您的示例数据,这应该有效

awk '/:82 /{print $1,$2; next} {print}' inputfile

您可以将其输出重定向到另一个文件中。

awk '/:82 /{print $1,$2; next} {print}' inputfile >> newfile

一般来说,如果可以的话,我不喜欢对原始数据进行更改。

答案3

基于给定的输入

awk '$2~/:82$/{$NF=""}1' input.txt > output.txt

相关内容