如何使用sed与模式文件和sed到位

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用sed与模式文件和sed到位相关的知识,希望对你有一定的参考价值。

我正在尝试使用模式列表来搜索4个大文件,并删除包含正则表达式的行。

我试图指定文件路径但它不起作用

但-n '/ {首页/粗糙/关} / P' rimco rimco2票据背书担保aval2

我尝试使用sed选项-f,但它也没有用

但主场-f /粗糙/关rimco rimco2票据背书担保aval2

如果找到模式,最终目标将是通过删除该行来实现。

答案

这可能适合你(GNU sed):

sed 's#/#\/#g;s#.*#/&/p#g' patternFile | sed -nf - file1 file2 file3 ...

将patternFile转换为sed脚本并针对数据文件运行它。

注:首先引用sed分隔符/,并将patternFile的每一行转换为打印/pattern/p的地址。

另一答案

试试这个:

cmd=$(
echo -n "sed -i '"
while read -r line; do
    echo -n "/$line/d;"
done < patternfile.txt
echo "'"
)
"$cmd" rimco rimco2 aval aval2
另一答案

以下是如何通过使用GNU awk进行就地编辑来高效且稳健地执行您想要的操作(假设您在regexpsfile中的正则表达式列表并不大):

awk -i inplace 'NR==FNR{re=re sep "(" $0 ")"; sep="|"} NR!=FNR && $0~re{next} 1' regexpsfile rimco rimco2 aval aval2

以上是关于如何使用sed与模式文件和sed到位的主要内容,如果未能解决你的问题,请参考以下文章

sed编辑命令

sed 与 awk

如何使用sed搜索和替换]、[? [关闭]

sed的简介与使用

sed与awk

如何使用 sed 一次提取标记之间的多个模式?