我在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
有人可以帮忙。
由于
答案 0 :(得分:0)
没有。 grep
是面向行的。
你无法让它像那样匹配。
您可以通过使用替换来使其与 模式的线匹配。
grep -l 'RITE AID\|ST.820' natriter820u.20140914
要查找同时包含两个匹配项的文件,您需要将调用链接到grep
或使用其他工具(例如awk
)。
grep 'RITE AID' natriter820u.20140914 | grep -q 'ST.820' && echo natriter820u.20140914
使用awk操作单个文件:
awk '/RITE AID/{pat1++} /ST.820/{pat2++} pat1&&pat2{print FILENAME; exit}' natriter820u.20140914
对多个文件(如grep)进行操作:
gawk '/A/{p1++} /d/{p2++} p1&&p2{print FILENAME; p1=0; p2=0; nextfile}' file1 file2 file3 file4