xargs

850阅读 0评论2016-01-18 sync_1521
分类:LINUX

xargs
xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments 。 
因为是以空白字元作为分隔,所以,如果有一些档名或者是其他意义的名词内含有空白字元的时候, xargs 可能就会误判了。

xargs用的比较多的几个参数
-n num 后面加次数,表示命令在执行的时候一次用的argument(默认以空格和\n分隔开)的个数,默认是用所有的(这个不准确,是根据xargs它本身的能力)。
test@server:/tmp> cat 1
a b c d:c
z z
z
test@server:/tmp> cat 1 |xargs -n 3 echo   (这里的-n3以空格和\n计数
a b c
d:c z z
z

如下例子可以看出xargs自身的饭量了
test@server:/tmp> seq 2000 | xargs echo "hoho" > abc.txt
test@server:/tmp> grep -c "hoho" abc.txt
1
test@server:/tmp> seq 40000 | xargs echo "hoho" > abc.txt
test@server:/tmp> grep -c "hoho" abc.txt
2
test@server:/tmp> 


-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行(以\n分隔)赋值给{},可以用{}代替。
test@server:/tmp> cat 1 
a b c d:c
z z
z
test@server:/tmp> cat 1 |xargs -i echo {}
a b c d:c
z z
z


-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符(改了后 \n就不是分隔符了)。
test@server:/tmp> cat 1
a b c d:c
z z
z
test@server:/tmp> cat 1 |xargs -i -d: echo {} 
a b c d   ---相当于第一行
c         ---|
z z       ---|--相当于第二行
z         ---|


test@server:/tmp> cat 1
a b: c d:c
z: z:
z
test@server:/tmp> cat 1 |xargs -n3 -d: echo
a b  c d c
z
 z 
z

这里的-n3完全以:作为计数,搞不懂。。



上一篇:ansible cento6.x 安装
下一篇:awk 时间函数