regex - 带有简单正则表达式的 bash 脚本

标签 regex bash sed

考虑以下带有简单正则表达式的 bash 脚本:

for f in "$FILES"
do
  echo $f
  sed -i '/HTTP|RT/d' $f
done

此脚本应读取 FILES 指定的目录中的每个文件,并删除出现 'http''RT' 的行但是,正则表达式的 OR 部分似乎不起作用。也就是说,如果我只有 sed -i '/HTTP/d' $f 那么它将删除所有包含 HTTP 的行,但我无法让它删除两个 HTTPRT

  1. 我必须在正则表达式中进行哪些更改才能删除带有 HTTPRT 的行?

提前致谢!

最佳答案

有两种方法(至少):

  1. 让 sed 理解您的正则表达式:

    sed -E -i '/HTTP|RT/d' $f

  2. 单独指定每个标记:

    sed -i '/HTTP/d;/RT/d' $f

关于regex - 带有简单正则表达式的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19944137/

相关文章:

linux - 使用脚本更改用户 shell?

linux - 将 cat 输出作为变量进行比较

sed - 使用 sed 或 awk 删除行

python - 尝试使用正则表达式在起点和终点之间找到一个大字符串

php - 使用 preg_match_all 从字符串中提取图像 SRC

BASH:在同一行中打印两行文件

BASH:找到第一个字符串后在文件中查找一个字符串

Linux 在一行中搜索一个字符串,但替换该行中的另一个字符串

regex - dart:使用正则表达式拆分字符串并包含分隔符

java - 两个字符序列之间的正则表达式与 `String.split` 不匹配