Rei*_*ica 20 unix shell command-line grep
我通常使用以下管道来搜索特定的搜索字符串,但忽略某些其他模式:
grep -Ri 64 src/install/ | grep -v \.svn | grep -v "file"| grep -v "2\.5" | grep -v "2\.6"
Run Code Online (Sandbox Code Playgroud)
这可以简洁地实现吗?我正在使用GNU grep 2.5.3.
Rob*_*lls 26
只需将未过滤的输出传递到grep的单个实例中,并使用扩展的regexp来声明要忽略的内容:
grep -Ri 64 src/install/ | grep -v -E '(\.svn|file|2\.5|2\.6)'
Run Code Online (Sandbox Code Playgroud)
编辑:要搜索多个文件,也可以尝试
find ./src/install -type f -print |\
grep -v -E '(\.svn|file|2\.5|2\.6)' | xargs grep -i 64
Run Code Online (Sandbox Code Playgroud)
编辑:哦.我忘了添加简单的技巧来阻止多个grep实例的可用性,即
ps -ef | grep something | grep -v grep
Run Code Online (Sandbox Code Playgroud)
用它代替
ps -ef | grep "[s]omething"
Run Code Online (Sandbox Code Playgroud)
消除了第二个grep的需要.
使用该-e选项指定多个模式:
grep -Ri 64 src/install/ | grep -v -e '\.svn' -e file -e '2\.5' -e '2\.6'
Run Code Online (Sandbox Code Playgroud)
您可能还对该-F标志感兴趣,该标志表示模式是固定字符串而不是正则表达式.现在你不必逃避点:
grep -Ri 64 src/install/ | grep -vF -e .svn -e file -e 2.5 -e 2.6
Run Code Online (Sandbox Code Playgroud)
我注意到你正在掏出".svn".您可能希望在初始递归grep中跳过任何名为".svn"的目录.如果我是你,我会这样做:
grep -Ri 64 src/install/ --exclude-dir .svn | grep -vF -e file -e 2.5 -e 2.6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41465 次 |
| 最近记录: |