考虑以下带有简单正则表达式的 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
的行,但我无法让它删除两个 HTTP
和 RT
- 我必须在正则表达式中进行哪些更改才能删除带有
HTTP
或RT
的行?
提前致谢!
最佳答案
有两种方法(至少):
让 sed 理解您的正则表达式:
sed -E -i '/HTTP|RT/d' $f
单独指定每个标记:
sed -i '/HTTP/d;/RT/d' $f
关于regex - 带有简单正则表达式的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19944137/