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

200 ? "200px" : this.width)!important;}
-->

介绍

我们可以利用管道将一个命令的“标准输出”作为另一个命令的“标准输入”;但是这里的标准输出都是数据流,但是某些命令的输入只接收参数命令不接收数据流,那么这种一般的方法就无法实现,这里就需要借助xargs命令。xargs可以将数据流转换成命令参数作为标准输入的参数,接下来就来详细了解xargs的用法。

多行转换

[[email protected] test]# cat test
0 1 2 3 4
5 6 7 8 9

在当前的test的表中有0-9的两行记录,每个数字间以空格隔开

1.单行显示,默认xargs会将换行符以空格替换

[[email protected] test]# cat test|xargs
0 1 2 3 4 5 6 7 8 9

2.多行显示,使用-n number参数

number值表示每行显示的参数的数量且number必须大于0,如果number大于参数的数量就以参数最大的数量显示,例如每行显示一个参数。

cat test|xargs -n 1

界定符分隔

xargs可以以单个字符作为一段文本的分界符,将文本拆分成多个部分以空格隔开,但是分解符只能是单个字符,不能是组合字符。

1.根据字符拆分

echo "111a222a333a444" |xargs -d a

2.同时还可以结合-n参数拆分成多行显示

echo "111a222a333a444" |xargs -d a -n 2

命令传参

接下来就可以看一下xargs怎样将标准输出数据流转换成命令参数

接下来就以一个简单的bash举例

#!/bin/bash
echo $* "end"

这个参数接收参数并返回原参数并以end作为行结尾

从上截图可以看出xargs将标准的输出作为参数传递给了bashtest

其它用法

当传递的命令存在多个参数而只需要给单独的某个参数传参数时,可以使用-I replace-str

vim bashtest

#!/bin/bash
echo $1 $2 "end"

我只需要将xargs的参数传递给$1

cat test|xargs -n 1 |xargs -I str  ./bashtest str a

注意:两边的replace-str的名称必须保持一致,名称不限。

总结

xargs的使用技巧还有很多,有兴趣可以去慢慢摸索


备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》

时间: 2024-10-22 17:53:54

Linux xargs将输出数据流转换成命令参数的相关文章

UNIX & Linux 将字符串转换成命令执行

本文适用于以下主题: Unix & Linux convert string to command UNIX & Linux 将字符串转换成命令执行 Linux sh脚本中怎样将字符串转化为命令 答案: 在shell脚本中使用eval命令(此命令是bash的内置命令,凡是bash的内置命令查看帮助时用man eval),而不是exec. 语法: eval 参数 参数可以为一组命令的字符串,如"eval yum install dstat–y ",如果不加参数直接执行ev

linux c/c++ IP字符串转换成可比较大小的数字

由www.169it.com搜集整理 IP字符串转换成可比较大小的数字,具体代码如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include "stdio.h" #include "arpa/inet.h" #include using namespace std; // linux c/c++ IP字符串转换成可比较大小的数字 // g++ -o test_ip_unsigned test_ip_unsigned.cpp int 

在Linux下将HTML文件转换成PDF文件

今天要写一个上交的作业,本来是想用Office Word来写的,但是,我的Office貌似不能用了,但是,Linux下的LibreOffice写出的文档,在打印的时候是经常出现乱码的.所以,后来想到可以 利用HTML写出格式比较好的文档,所以,想到能不能先写出一份比较规范的文档出来,然后转换成PDF文档,因为如果转换成PDF文档,打印,浏览都会比较方便,并且在转换成PDF之后,在打印的时候也不容易出现乱码的现象,经过搜索发现了一个比较不错的html转pdf文件的工具wkhtmltopdf, 在U

16进制数据流转换成C语言数组

在开发中经常遇到以下情况,通过一些工具捕获的16进制数据,应用到代码中,比如通过Wireshark抓获的数据包,观察到的程序内存数据. 但是在开发时,不能直接使用这些数据,需要转换如下样子,才可以在代码中使用: 我写了一个小工具,可以将二进制数据流转换成数组,代码如下: // FileNameToArray.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include

linux环境下deb格式 转换成rpm格式

linux环境下deb格式 转换成rpm格式 使用alien工具转换deb格式到rpm格式 alien_8.87.tar.gz 下载alien_8.87.tar.gz [[email protected] ~]# wget http://ftp.de.debian.org/debian/pool/main/a/alien/alien_8.87.tar.gz [[email protected] ~]# tar zxvf alien_8.87.tar.gz[[email protected] ~]

在Linux上如何将文本文件转换成PDF格式

当你有一大堆文本文件要维护的时候,把它们转换成PDF文档会好一些.比如,PDF更适合打印,因为PDF文档有预定义布局.除此之外,还可以减少文档被意外修改的风险. 要将文本文件转换成PDF格式,你要按照下面的两步. 准备工作 首先你要安装两个需要的包. 在 Debian.Ubuntu 或者 Linux Mint上: $ sudo apt-get install enscript ghostscript 在 Fedora.CentOS/RHEL上: $ sudo yum install enscri

linux环境php将word转换成pdf

原文地址:http://www.niu12.com/article/15 ubuntu.java环境.openoffice.jodConverter.php 1.安装java环境 a. jdk下载(我选的是jdk-8u201-oth-JPRXXXjdk-8u201-linux-x64.tar.gz) b.将压缩包移到指定目录(自定义) $ sudo mv jdk-8u201-linux-x64.tar.gz /usr/local/ 解压文件 $ sudo tar -zxvf /usr/local

参数强制转换还是将参数的地址强制转换成线程参数

第一种方式:将传递的值,强制转换值的地址,然后在线程函数中,首先强制转换参数的类型,然后取值 DWORD WINAPI ThreadProc(LPVOID lpParam){ int i=(*(int*)lpParam);   //get the parameter from CreateThread function CreateThread(NULL,            NULL,      ThreadProc,      (LPVOID)i,**********      0,   

php接收二进制数据流转换成图片

<?php /** * 图片类 * @author [email protected] * @version 1.0 * PHP默认只识别application/x-www.form-urlencoded标准的数据类型. 因此,对型如text/xml 或者 soap 或者 application/octet-stream 之类的内容无法解析,如果用$_POST数组来接收就会失败! 故保留原型,交给$GLOBALS['HTTP_RAW_POST_DATA'] 来接收. 另外还有一项 php://i