【问题标题】:Special replace in Sed [duplicate]Sed中的特殊替换[重复]
【发布时间】:2016-10-03 15:50:05
【问题描述】:

只有在它以一个值开始和结束时才能替换行。例子 我有这些行

Line 1: http_access allow acl1 acl2
Line 2: http_access deny acl1

我想碰巧渴望 http_access 拒绝我 acl1 只需删除第 2 行。使用 sed 's/http_access deny acl1/mi_nueva_regla/g' /file 时修改我的这两行。

【问题讨论】:

  • 这似乎不对,请仔细检查您的内容。此外,您不需要 g 后缀,但这不是问题。
  • 给定的s/// 命令只会改变一行。
  • 请在您的minimal reproducible example 中包含一些示例输入和预期输出。这将使其他人更容易重现和理解您所看到的内容,并提高您获得有用答案的机会。
  • 我不明白“我想碰巧渴 http_access 拒绝我 acl1 只是删除第 2 行。”在这种情况下,口渴是什么意思?
  • 例如我有第1行:http_access allow acl1 acl2 第2行:http_access deny acl1 第3行:http_access allow acl2 acl3 第4行:http_access deny acl1 acl3 我只想删除第2行,http_access deny acl1并保持文件的其余部分不变。

标签: bash replace sed


【解决方案1】:

给定一个输入文件file.txt

$ cat file.txt
http_access allow acl1 acl2
http_access deny acl1
http_access allow acl2 acl3
http_access deny acl1 acl3 

使用 GNU sed 仅删除包含 http_access deny 的第一行:

sed '0,/http_access deny/{/http_access deny/d}' file.txt

或更短:

sed '0,/http_access deny/{//d}' file.txt

输出:

http_access allow acl1 acl2
http_access allow acl2 acl3
http_access deny acl1 acl3

【讨论】:

  • 0 地址是 GNU sed 扩展。
猜你喜欢
  • 2019-05-12
  • 2019-10-14
  • 2019-09-07
  • 2021-06-11
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多