shelll编程之xargs命令:上一个命令输出作为下一个命令的输入
Posted 锦衣admin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shelll编程之xargs命令:上一个命令输出作为下一个命令的输入相关的知识,希望对你有一定的参考价值。
shelll编程之xargs命令:上一个命令输出作为下一个命令的输入
xargs命令
xargs命令
: 可以将管道或者标准输入(stdin)的数据转换成命令行参数,也能够从文件的输出中读取参数
xargs命令
: 一般是和管道符一起使用
xargs命令说明:
命令格式:
#l 命令 | xargs 选项 选项的值
选项说明:
-a filename:从文件中读入作为stdin,如:xargs -a 1.txt(就是读取1.txt的内容作为下一参数的stdin)
-E flag:flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止
-p:交互式打印。当每次执行一个argument的时候询问一次用户
-t:表示先打印命令,然后再执行
-n num:后面加次数,表示命令在执行的时候一次性用的argument的个数,默认是用所有
-i或-I:将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替
-r no-run-if-empty:当xargs的输入为空的时候则停止xargs,不用再去执行
-d delim:指定分割符,默认的xargs分割符是回车,argument的分隔符是空格。
演示:
[root@server ~]# cat 1.txt
a
b
c
d
1234
2
3
# xargs -a 1.txt => -a 读取文件内容
[root@server ~]# xargs -a 1.txt
a b c d 1234
# xargs -a 1.txt -E c => 通过-E 指定一个标志,让xargs执行到这个标志就停止
[root@server ~]# xargs -a 1.txt -E c
a b
[root@server ~]# xargs -a 1.txt -E 1 => 因为没有1这个标志,所以xargs不会执行-E 选项
a b c d 1234 2 3
[root@server ~]# xargs -a 1.txt -E 2 => 有2这个标志,会停止执行
a b c d 1234
# xargs -a 1.txt -p => -p 会询问是否打印,并且会告诉你 -a 选项是如何打印出来的,通过echo命令
[root@server ~]# xargs -a 1.txt -p
echo a b c d 1234 2 3 ?...y => 输入 y 执行打印
a b c d 1234 2 3
[root@server ~]# xargs -a 1.txt -p
echo a b c d 1234 2 3 ?...n => 输入 n 不执行打印
# xargs -a 1.txt -t => -t 选项和-p选项一样,但是不会询问,直接打印出来
[root@server ~]# xargs -a 1.txt -t
echo a b c d 1234 2 3
a b c d 1234 2 3
# xargs -a 1.txt -n1 => 通过制定 -n 选项指定一行输出几个数据
[root@server ~]# xargs -a 1.txt -n1
a
b
c
d
1234
2
3
[root@server ~]# xargs -a 1.txt -n2
a b
c d
1234 2
3
[root@server ~]# xargs -a 1.txt -n3
a b c
d 1234 2
3
# xargs -a 1.txt -d "-" => -d 选项改掉列与列的默认分隔符为其他,就会换行
[root@server ~]# xargs -a 1.txt -d "-"
a
b
c
d
1234
2
3
[root@server ~]# xargs -a 1.txt => 不修改默认分隔符是空回车,全部一行打印
a b c d 1234 2 3
以上是关于shelll编程之xargs命令:上一个命令输出作为下一个命令的输入的主要内容,如果未能解决你的问题,请参考以下文章
xargs标准输出作为参数 给命令 echo file{1..10}| xargs touch