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

问题描述 投票:-1回答:3

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

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

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

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

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

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

linux bash shell sed
3个回答
2
投票

这可能适合你(GNU sed):

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

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

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


0
投票

试试这个:

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

0
投票

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

awk -i inplace 'NR==FNR{re=re sep "(" $0 ")"; sep="|"} NR!=FNR && $0~re{next} 1' regexpsfile rimco rimco2 aval aval2
© www.soinside.com 2019 - 2024. All rights reserved.