zoukankan      html  css  js  c++  java
  • linux命令之玩转xargs

    linux命令之玩转xargs

    我们可以用管道将一个命令的标准输出重定向到另一个命令的标准输出,但是有些命令
    只能以命令行参数的形式接收数据,而无法接受通过stdin的数据,这个时候我们就要用到xargs。

    xargs应该紧跟管道操作符之后。

    1.将多行转换为单行,将单行转换为多行。

    [root@localhost 桌面]# cat show.txt 

    wang

    Hunan Chenzhou

    123456

    li

    Guangzhou Zhuhai

    654321

    [root@localhost 桌面]# cat show.txt | xargs

    wang Hunan Chenzhou 123456 li Guangzhou Zhuhai 654321

    [root@localhost 桌面]# cat show.txt | xargs -n 4

    wang Hunan Chenzhou 123456

    li Guangzhou Zhuhai 654321

    2.定界符,使用-d 选项

    [root@localhost 桌面]# cat show.txt | xargs -d " "

    wang Hunan Chenzhou 123456  li Guangzhou Zhuhai 654321 

    3.读取stdin,将格式化参数传递给命令(一个或多个)

    [root@localhost 桌面]# vi ceshi.sh

    #!/bin/bash

    echo $*'OK'

    [root@localhost 桌面]# chmod +x ceshi.sh 

    [root@localhost 桌面]# cat show.txt | xargs -n 1 ./ceshi.sh 

    wangOK

    HunanOK

    ChenzhouOK

    123456OK

    liOK

    GuangzhouOK

    ZhuhaiOK

    654321OK

    [root@localhost 桌面]# cat show.txt | xargs ./ceshi.sh 

    wang Hunan Chenzhou 123456 li Guangzhou Zhuhai 654321OK

    4.传递复杂的命令参数(可变,不可变参数)-I选项替换字符

    [root@localhost 桌面]# cat show.txt | xargs -I {} ./ceshi.sh -p {} -1

    -p wang -1OK

    -p Hunan Chenzhou -1OK

    -p 123456 -1OK

    -p li -1OK

    -p Guangzhou Zhuhai -1OK

    -p 654321 -1OK

    5.xargs结合其他命令的用法

    [root@localhost 桌面]# file * | grep show | cut -d ":" -f1 | xargs wc -l

    8 show.txt

    [root@localhost 桌面]$ file * | grep show | cut -d ":" -f1 |xargs -t wc -l

    wc -l show.txt 

    8 show.txt

    -t选项,先打印命令,然后再执行

    [root@localhost 桌面]# file * | grep show | cut -d ":" -f1 | xargs vi    打开vi编辑器

    [root@localhost 桌面]# file * | grep show | cut -d ":" -f1 | xargs -t -i mv {} {}.bak

    mv show.txt show.txt.bak 

    修改名字

    [root@localhost 桌面]$ find . -name "*.txt" -type f -print0 | xargs -0 tar -zcvf text.tar.gz

    查找所有txt文件,并压缩它们。

    其实xargs可以接很多命令,发现它们你会觉得非常有趣。

  • 相关阅读:
    删除名字和参数
    更改NX TITLE为路径
    我自己写的创建刀具
    创建刀具,很有用的信息
    控件改名
    已知体的最大尺寸在一堆实体里面找这个体
    cam对象类型
    ORACLE导入导出工具的使用
    ORACLE表空间
    Statement与PreparedStatement的区别
  • 原文地址:https://www.cnblogs.com/out8/p/4233570.html
Copyright © 2011-2022 走看看