我有以下awk命令:
awk -v RS=! -v ORS= '/abc/ && /def/ {print FILENAME;}' files
这将查找文件中的每个文件,并用“!”分隔文件中的每个记录,然后将记录与“ abc”和“ def”进行匹配。上面的代码将打印文件名。如果我删除{print FILENAME}
它,它将在匹配的情况下打印整个记录。
文件如下所示:
abc1
bce
bcd
def
!
abc2
bce
def
!
我想打印出文件名和与“ abc”匹配的行。例如:
file1
abc1
file2
abc2
abc3
我该怎么办?
awk 'FNR==1{print FILENAME} /abc/' file1 file2
该FNR
字段设置1
为读取新文件。FNR==1
在每个输入文件的第一行为true时,将执行的操作将在print FILENAME
其中打印file1
并file2
/abc/
abc
由于未指定任何操作,因此将匹配包含的所有行,默认情况下将打印整个记录($0
)。类似于写作/abc/{print $0}
file1
abc1
file2
abc2
abc3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句