我正在尝试使用模式列表来搜索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