忽略换行符的KSH中的GREP函数



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

有人能帮忙吗。

感谢

否。CCD_ 1是面向行的。

你不可能让它像那样匹配。

通过使用交替,您可以使其与模式匹配。

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

最新更新