我有一个 text 二进制文件,其中有数千行由日期和单词组成的行组成。这些行中的大多数都包含单词REGULAR。但是,文件中某处只有一个包含REGU的损坏行。
有没有办法可以用行REGU来隔离行号?
示例行
BLLAH2014-02-26REGULAR2014-01-02-20.06.03BLAHHHH
答案 0 :(得分:2)
grep -anw "REGU[^L]*" file.bin
使用此命令,您可以找到与REGU
匹配的所有行,后跟任何不同于L
或无
-anw
的长选项格式为:
--text --line-number --word-regexp
--text
由于您的文件是二进制文件,因此您必须添加-a
以强制grep
将该文件解释为文本。
--line-number
它打印匹配的文本的行号。它满足您的要求。
--word-regexp
此选项排除以REGUL
开头的任何匹配(即:REGULAR
)
答案 1 :(得分:1)
由于您不知道损坏的行,首先找到不是REGULAR
的行,然后找到那些REGU
行。
此外,您正在搜索二进制文件。因此-a
选项
grep -nva REGULAR file.txt | grep -a REGU
答案 2 :(得分:0)
你可以尝试下面的Perl命令,
perl -nle 'print $. if /(?<![a-zA-Z])REGU(?![A-Za-z])/' file