KSH中的GREP功能忽略了LINE Breaks

时间:2014-09-19 19:48:05

标签: grep line-breaks

我在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

有人可以帮忙。

由于

1 个答案:

答案 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