【问题标题】:Find pattern and append in sed在 sed 中查找模式并追加
【发布时间】:2013-08-11 08:05:42
【问题描述】:

我很难在 sed 中找到一个模式并在模式前追加一行

假设我想用 sed 找到以下模式

"stackov/er;flo.w users are great"

注意:要搜索的模式包含双引号, /, ;和点 然后在模式之前附加这一行

proud sta{ckov,er member

我的尝试

1.sed "|"stackov/er;flo.w users are great"|i\proud sta{ckov,er member" file

2.

sed "/stackov/er;flo.w users are great|i\proud sta{ckov,er member" file

我尝试将 / 分隔符替换为 |然后用 \ 以模式转义 / 但它没有用。

任何帮助表示赞赏

【问题讨论】:

标签: bash sed


【解决方案1】:

这可能对你有用(GNU sed):

sed '/"stackov\/er;flo\.w users are great"/i\proud sta{ckov,er member' file

【讨论】:

  • 谢谢老兄...如果在“stackov/er;flo.w us”这样的搜索模式中找到双引号,命令将如何变化
  • 如果单引号命令(如在解决方案中),双引号被视为与任何其他非元字符相同,即它们不需要被引用。 – potong 11 小时前
【解决方案2】:

除非您使用的是 Windows(在这种情况下我不知道),否则您基本上希望整个 sed 脚本用单引号括起来,而不是双引号。

sed '\|"stackov/er;flo.w users are great"|i\proud sta{ckov,er member' file

您也可以使用双引号,但除非您特别需要双引号,否则您应该默认使用单引号。如果您将来也想使用它,请阅读 the shell's quoting behavior

【讨论】:

    猜你喜欢
    • 2012-04-08
    • 2015-03-05
    • 2014-03-30
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多