pus*_*pop 8 grep shell-script text-processing regular-expression
所以,可能我应该用grep这个。只要我需要递归搜索,我就应该使用grep -r. 但后来我不知道接下来我该怎么办 ;)
我怎样才能做到这一点?
Sté*_*las 14
使用greps 支持-r(recursive) 和-P(PCRE) 选项(或pcregrepwith -r):
grep -rP '^(?=.{101}).*?if' .
Run Code Online (Sandbox Code Playgroud)
或者POSIXly:
find . -type f -exec awk 'length > 100 && /if/ {
print FILENAME ": " $0}' {} +
Run Code Online (Sandbox Code Playgroud)
(请注意,对于非文本文件(包含非字符、零字节值、太长的行或最后一个换行符之后的数据的文件)的实现之间的行为会有所不同。另请注意,某些grep实现将在非常规文件中搜索或将遵循符号链接)。
Dan*_*i_l 12
使用 awk 计算 $0 的大小和是否存在子字符串?
awk '( length($0) > 100 && index($0,"if") ){print}' file
如果“if”应该是一个词(而不是一个简单的子字符串),你可以使用
awk '( length($0) > 100 && match($0,/\<if\>/) ){print}' file
您可以使用由管道连接的两个 grep:
grep -r '.\{100\}' /path | grep 'if'
Run Code Online (Sandbox Code Playgroud)
要排除if在其路径或名称中包含的文件,请使用':.*if'而不是'if'(如果您的文件名或路径包含冒号,仍然可能会中断)。