使用 sed 替换文本行

Replacing line of text cointing using sed

'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')

您可以使用

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

online demo。正则表达式 POSIX BRE 兼容并匹配

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

请注意 POSIX BRE 正则表达式中的捕获组设置为 \(...\)。文字点需要转义,因为使用双引号文字,反斜杠加倍(不需要转义单引号)。