E.g。有以下file.gz:
dbc
1
321
d53 8
我可以使用以下逐步方法来grep for regex,显示行号等等(好吧,grep有点强大):
gunzip file.gz; grep -Pn "^\d{2,}$" file; gzip file
输出为3:321
。
这将解压缩文件,grep for patterns,压缩文件。所以我必须有权写入数据。我不想写数据,必须有一种更智能的方法来处理压缩文件。
可以很容易地找到zgrep,表示选项直接传递给grep。不过,我不能在zgrep中使用正则表达式(只有POSIX expressions)。我也不知道zgrep是否会像上面提到的那样逐步完成相同的工作。
那么如何直接对压缩文件使用高级grep选项而不解压缩呢?
答案 0 :(得分:1)
您可以使用POSIX模式轻松完成相同的操作:
zgrep -n "^[0-9]\{2,\}$" zipzip.gz
但如果你绝对想要使用perl正则表达式:
zgrep -nP "^\d{2,}$" zipzip.gz
答案 1 :(得分:1)
zgrep
是正确的事情。如果你需要为其他没有等效zgrep
的命令做类似的事情,你通常可以这样做:
gunzip -c blah.gz | some_command
甚至更一般
cat blah.gz | gunzip | some_command
这适用于在stdin / stdout(大部分都是)上输入和输出的任何解压缩器。
答案 2 :(得分:0)
您使用的是-E标志吗?从联机帮助页:
-E, - extended-regexp 将PATTERN解释为扩展正则表达式(见下文)。