grep和xargs的一些实用操作
时间:2010-07-29 来源:zhuyubei
今天搜到了grep命令和xargs命令比较实用的用法。
1 grep 前后行
grep匹配行的前后行输出。一般来说grep可以把匹配到的行输出。但是很多时候,在匹配行的周围也会分布着一些比较重要的信息,尤其是在日志文件。这对于我们获取错误信息并进行分析有帮助。所以grep确实提供了输出匹配行周围的行。假设文件信息如下:
A
B
C
D
-
Error
Down
NotGood
New Process
A
B
使用如下命令可以输出匹配行的前后行
# A是After的意思,B是Before的意思 grep -A2 -B2 "Error" file 或者是 grep -2 "Error" file |
如此输出:
D
-
Error
Down
NotGood
2 xargs 指定参数位置
一般来说xargs用来传参数的时候,会把传来的参数作为命令全部所能看到的参数.比如
grep - l "Pattern" somefiles | xargs cp dest.该命令的目的是获取所有满足Patten的文件名,并把它们复制到dest去。但是就像刚刚说的那样cp所能看到得所有参数已经被xargs所指定。这就是说,cp会把xargs传来的最后一个参数作为复制的目的地。但是如果最后一个参数是个文件的话,明显复制就出错了。当然如果最后一个参数是目录,那更可怕。
不过通过使用{}来指定输入参数的范围,可以有效避免这个问题,方法就是
grep -l "Pattern" somefiles | xargs -I {} cp {} Dest |
通过 -I {} 来指定输入参数的范围,即是从前面grep输出的信息。然后在cp中再用{}来指定使用这些参数,cp还可以继续识别其他的参数,比如这里的Dest。这样就可以更好的利用grep或者find传来的参数了。
相关阅读 更多 +