• xargs命令


    xargs的作用

    xargs命令从stdin处读取一系列参数,然后使用这些参数来执行指定命令。它能将单行或多行输入文本转换成其他格式,例如单行变多行或是多行变单行。 

     

    xargs的工作原理

    xargs命令接受来自stdin的输入,将数据解析成单个元素,然后调用指定命令并将这些元素作为该命令的参数。xargs默认使用空白字符分割输入并执行/bin/echo。

     

    xargs的常见用法

    1、将多行输入转换成单行输出

    xargs默认的echo命令可以用来将多行输入转换成单行输出。

    [root@vmax0105 test_shell]# cat file.txt
    1 2 3 4 5 6
    7 8 9 10
    11 12
    [root@vmax0105 test_shell]# cat file.txt | xargs
    1 2 3 4 5 6 7 8 9 10 11 12

    2、将单行输入转换成多行输出

    xargs的-n选项可以将输入分割成多行,每行N个元素。

    [root@vmax0105 test_shell]# cat file.txt | xargs -n 3
    1 2 3
    4 5 6
    7 8 9
    10 11 12

    3、自定义分隔参数的分隔符

    xargs的-d选项可以为输入数据指定自定义的分隔符
    [root@vmax0105 test_shell]# echo "a;b;c" | xargs
    a;b;c
    [root@vmax0105 test_shell]# echo "a;b;c" | xargs -d ';'
    a b c

    结合-n选项,可以将输入分割成多行,每行包含两个单词: 

    [root@vmax0105 test_shell]# echo "a;b;c" | xargs -d ';' -n 2
    a b
    c
    4、输出命令前询问是否执行
    -p 选项:输出要执行的命令前,询问是否执行。输入y才继续执行,否则不执行。
    [root@vmax0105 test_shell]# echo "a;b;c" | xargs -p -d ';'
    echo a b c
     ?...y
    a b c

    5、输出指定字符之前的参数

    -E 选项:该选项指定一个字符串,当xargs解析出多个命令行参数的时候,如果搜索到-e指定的命令行参数,则只会将-e指定的命令行参数之前的参数(不包括-e指定的这个参数)传递给xargs后面的命令

    [root@vmax0105 test_shell]# echo "a b c" | xargs -E 'b'
    a

    注意:-E只有在xargs不指定-d的时候有效,如果指定了-d则不起作用,而不管-d指定的是什么字符,空格也不行。

     
    -0 选项表示以 '' 为分隔符,一般与find结合使用
    [root@vmax0105 test_shell]# find . -name "*.txt"
    ./file.txt
    ./b.txt
    ./a.txt
    [root@vmax0105 test_shell]# find . -name "*.txt" -print0 | xargs -0
    ./file.txt ./b.txt ./a.txt
    [root@vmax0105 test_shell]# find . -name "*.txt" -print0 | xargs -d ""
    ./file.txt ./b.txt ./a.txt

    默认情况下find的输出结果是每条记录后面加上换行,也就是每条记录是一个新行。加上 -print0 参数表示find输出的每条结果后面加上 '' 而不是换行。

    xargs的 -0 和 -d '' 表示其从标准输入中读取的内容使用 '' 来分割,由于 find 的结果是使用 '' 分隔的,所以xargs使用 '' 将 find的结果分隔之后得到3个参数:file.txt a.txt b.txt

    -i 选项

    xargs和find是一对非常好的组合。

    https://www.jb51.net/article/114263.htm

    待完善...

     
  • 相关阅读:
    深入Activity
    swift -变量的定义与使用
    tomcat中的Manager App帐号password管理
    TabLayout+Fragment+ViewPager+FragmentStatePagerAdapter实现Tab标签
    基于redis的分布式ID生成器
    Event-Souring模式
    Tensorflow
    RabbitMQ消息队列(五):Routing 消息路由
    RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)
    RabbitMQ消息队列(三):任务分发机制
  • 原文地址:https://www.cnblogs.com/lfjn/p/11389231.html
Copyright © 2020-2023  润新知