1.将多行换成转换成单行
-
[root@CentOS5 shell]# cat a.txt
-
hello world
-
oh my god
-
[root@CentOS5 shell]# cat a.txt | xargs
-
hello world oh my god
2.将单行换成多行
-
[root@CentOS5 shell]# cat a.txt
-
hello world
-
oh my god
-
[root@CentOS5 shell]# cat a.txt | xargs -n 1
-
hello
-
world
-
oh
-
my
-
god
-
[root@CentOS5 shell]# cat a.txt | xargs -n 2
-
hello world
-
oh my
-
god
3.分割字符串
-
[root@CentOS5 shell]# echo "123;abc;xyz;456"| xargs -d ';'
-
123 abc xyz 456
-
-
[root@CentOS5 shell]# echo "123;abc;xyz;456"| xargs -d ';' -n 1
-
123
-
abc
-
xyz
-
456
上面这个当然也可以通过awk来分割字符串
-
[root@CentOS5 shell]# echo "123;abc;xyz;456"| awk -F ';' 'END{for(i=1;i<=NF;i++)print $i}'
-
123
-
abc
-
xyz
-
456
或者通过sed来也可以实现替换字符串,
相对比 xargs就稍多敲点命令啦
-
[root@CentOS5 shell]# echo "123;abc;xyz;456"| sed 's/;/\n/g'
-
123
-
abc
-
xyz
-
456
4.通过xargs批量传参
如,批量创建文件
-
[root@CentOS5 shell]# ls
-
a.txt
-
[root@CentOS5 shell]# cat a.txt
-
hello
-
world
-
oh
-
my
-
god
-
[root@CentOS5 shell]# cat a.txt | xargs touch
-
[root@CentOS5 shell]# ls
-
a.txt god hello my oh world
接上批量删除文件
-
[root@CentOS5 shell]# cat a.txt | xargs rm -f
-
[root@CentOS5 shell]# ls
-
a.txt
但如果我想 创建“god.log hello.log my.log oh.log world.log” 这样的文件怎么办呢?
xargs 中有个-I选项 可以通过 -I {} 来代表输入参数,如下:
-
[root@CentOS5 shell]# cat a.txt
-
hello
-
world
-
oh
-
my
-
god
-
[root@CentOS5 shell]# ls
-
a.txt
-
[root@CentOS5 shell]# cat a.txt | xargs -I {} touch {}.log
-
[root@CentOS5 shell]# ls
-
a.txt god.log hello.log my.log oh.log world.log
阅读(1314) | 评论(0) | 转发(0) |