KSH中忽略换行符的GREP函数

KSH中忽略换行符的GREP函数,grep,line-breaks,Grep,Line Breaks,我在KSH脚本中使用了带有两种模式的grep命令。 文件中有换行符,并且两种模式在不同的行中。 这是命令- grep -l 'RITE AID.*ST.820' natriter820u.20140914 Pattern1 - RITE AID Pattern2 - ST*820 我没有从中得到任何结果,但是如果我用一个没有换行符的不同文件替换这个文件,它就会工作。 这里有处理断线的工作吗 以下是示例数据:- ISA*00* *00* *ZZ*NATIONS

我在KSH脚本中使用了带有两种模式的grep命令。
文件中有换行符,并且两种模式在不同的行中。
这是命令-

grep -l 'RITE AID.*ST.820' natriter820u.20140914
Pattern1 - RITE AID
Pattern2 - ST*820
我没有从中得到任何结果,但是如果我用一个没有换行符的不同文件替换这个文件,它就会工作。 这里有处理断线的工作吗

以下是示例数据:-

ISA*00*          *00*          *ZZ*NATIONSBANK    *14*0030020520500  *140918*1200*U*00401*000006436*0*P*^
GS*RA*014578892*IGIHCJEEJ*20140918*1200*6442*X*004010
ST*820*000006482
N1*PR*RITE AID HDQTRS. CORP.*1*014578892
有人能帮忙吗


谢谢

没有。
grep
是面向行的

你不能让它像那样匹配

通过使用交替,您可以使其与任意一种图案的线条相匹配

grep -l 'RITE AID\|ST.820' natriter820u.20140914
要找到同时具有这两个匹配项的文件,您需要将调用链接到
grep
或使用其他工具(如
awk

要使用awk操作单个文件,请执行以下操作:

awk '/RITE AID/{pat1++} /ST.820/{pat2++} pat1&&pat2{print FILENAME; exit}' natriter820u.20140914
要操作多个文件(如grep),请执行以下操作:


谢谢Etan,但这将提供所有文件,其中将有任何一个模式,这不是要求。有没有其他方法可以达到预期的效果?
awk '/RITE AID/{pat1++} /ST.820/{pat2++} pat1&&pat2{print FILENAME; exit}' natriter820u.20140914
gawk '/A/{p1++} /d/{p2++} p1&&p2{print FILENAME; p1=0; p2=0; nextfile}' file1 file2 file3 file4