Linux xargs将输出数据流转换成命令参数

本文发布时间: 2019-Mar-22
介绍我们可以利用管道将一个命令的“标准输出”作为另一个命令的“标准输入”;但是这里的标准输出都是数据流,但是某些命令的输入只接收参数命令不接收数据流,那么这种一般的方法就无法实现,这里就需要借助xargs命令。xargs可以将数据流转换成命令参数作为标准输入的参数,接下来就来详细了解xargs的用法。多行转换[[email protected] test]# cat test0 1 2 3 45 6 7 8 9在当前的test的表中有0-9的两行记录,每个数字间以空格隔开1.单行显示,默认xargs会将换行符以空格替换[[email protected] test]# cat test|xargs 0 1 2 3 4 5 6 7 8 92.多行显示,使用-n number参数number值表示每行显示的参数的数量且number必须大于0,如果number大于参数的数量就以参数最大的数量显示,例如每行显示一个参数。cat test|xargs -n 1界定符分隔xargs可以以单个字符作为一段文本的分界符,将文本拆分成多个部分以空格隔开,但是分解符只能是单个字符,不能是组合字符。1.根据字符拆分echo '111a222a333a444' |xargs -d a2.同时还可以结合-n参数拆分成多行显示echo '111a222a333a444' |xargs -d a -n 2命令传参接下来就可以看一下xargs怎样将标准输出数据流转换成命令参数接下来就以一个简单的bash举例#!/bin/bashecho $* 'end'这个参数接收参数并返回原参数并以end作为行结尾从上截图可以看出xargs将标准的输出作为参数传递给了bashtest其它用法当传递的命令存在多个参数而只需要给单独的某个参数传参数时,可以使用-I replace-strvim bashtest#!/bin/bashecho $1 $2 'end'我只需要将xargs的参数传递给$1cat test|xargs -n 1 |xargs -I str ./bashtest str a注意:两边的replace-str的名称必须保持一致,名称不限。总结xargs的使用技巧还有很多,有兴趣可以去慢慢摸索备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2020-Jul-13 01:12am
栏目列表