Linux 如何将sed与模式文件一起使用,并在适当的位置使用sed

Linux 如何将sed与模式文件一起使用,并在适当的位置使用sed,linux,bash,shell,sed,Linux,Bash,Shell,Sed,我试图使用模式列表在4个大文件中搜索,并删除包含正则表达式的行 我试图指定文件路径,但无效 sed-n'/{home/dirco/shut}/p'rimco rimco2 AVALA2 我尝试使用sed选项-f,但也没有成功 sed-f home/dirco/shut rimco rimco CO2 aval2 aval2 最终的目标是,如果找到模式,则通过删除该行将其固定到位。尝试以下方法: cmd=$( echo -n "sed -i '" while read -r line; do

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

我试图指定文件路径,但无效

sed-n'/{home/dirco/shut}/p'rimco rimco2 AVALA2

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

sed-f home/dirco/shut rimco rimco CO2 aval2 aval2

最终的目标是,如果找到模式,则通过删除该行将其固定到位。

尝试以下方法:

cmd=$(
echo -n "sed -i '"
while read -r line; do
    echo -n "/$line/d;"
done < patternfile.txt
echo "'"
)
"$cmd" rimco rimco2 aval aval2
cmd=$(
echo-n“sed-i”
当读取-r行时;执行
echo-n“/$line/d;”
完成
这可能适合您(GNU-sed):

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


注意:首先引用sed定界符
/
,然后将模式文件的每一行转换为一个地址,该地址将被打印出来
/pattern/p
,下面介绍如何通过使用GNU awk进行就地编辑来高效、可靠地完成所需的工作(假设
regexpsfile
中的regexp列表不多):


您的第一个
sed
命令中的语法几乎肯定是错误的,但是如果没有解释它应该做什么,我们就无法告诉您如何更正它。我认为这不会有任何区别,这里的问题不是模式,而是模式的位置,而不是命令。我正试图从一个文件中读取所有模式。由于文件的大小,使用循环将花费永远的时间。不幸的是,它不起作用,我一直得到
command not found
不幸的是,它不起作用,我一直得到
command not found
在每行的末尾感谢您的回复,但由于文件的大小,这将需要几天的时间才能通过每行。在描述中,我提到了4个大文件(每个大约10Gb)
sed 's#/#\\/#g;s#.*#/&/p#g' patternFile | sed -nf - file1 file2 file3 ...
awk -i inplace 'NR==FNR{re=re sep "(" $0 ")"; sep="|"} NR!=FNR && $0~re{next} 1' regexpsfile rimco rimco2 aval aval2