【问题标题】:Replacing line of text cointing using sed使用 sed 替换文本行
【发布时间】:2021-09-25 02:02:24
【问题描述】:
's/document\.querySelector\(\'\.popup\'\)\.classList\.add\(\'active\'\)/document\.querySelector\(\'\.popup\'\)\.classList\.add\(\'noactive\'\)/' design.js

我正在尝试替换 document.querySelector('.popup').classList.add('active') 经过 document.querySelector('.popup').classList.add('noactive')

【问题讨论】:

  • 首先阅读 POSIX 基本正则表达式语法。
  • 请注意,您不能在 shell 中转义单引号字符串中的单引号。 单引号内不能出现单引号。

标签: linux sed command-line grep


【解决方案1】:

你可以使用

#!/bin/bash
s="document.querySelector('.popup').classList.add('active')"
sed "s/\\(document\\.querySelector('\\.popup')\\.classList\\.add('\\)\\(active')\\)/\1no\2/g" <<< "$s"
# => document.querySelector('.popup').classList.add('noactive')

请参阅online demo。正则表达式符合 POSIX BRE 并匹配

  • \(document\.querySelector('\.popup')\.classList\.add('\) - 第 1 组 (\1):文字 document.querySelector('.popup').classList.add(' 文本
  • \(active')\) - 第 2 组 (\2):文字 active') 文本。

注意 POSIX BRE 正则表达式中的捕获组是用\(...\) 设置的。文字点需要转义,并且由于使用了双引号文字,因此反斜杠加倍(并且无需转义单引号)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-25
    • 2020-02-27
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 2017-12-20
    相关资源
    最近更新 更多