全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

linux中xargs命令的各种使用技巧

前言

xargs命令是把接收到的数据重新格式化,再将其作为参数提供给其他命令,下面介绍xargs命令的各种使用技巧,一起来看看吧。

一、将多行输入转换成单行输入:

[root@host1 test]# echo -e "1 2 3 4 5 \n6 7 8 \n9 10 11 12" >example.txt
[root@host1 test]# cat example.txt 
1 2 3 4 5 
6 7 8 
9 10 11 12
[root@host1 test]# cat example.txt |xargs 
1 2 3 4 5 6 7 8 9 10 11 12 

将单行输入转换成多行输出:

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

自定义定界符进行转换(默认的定界符是空格):

[root@host1 test]# echo "Hello:Hello:Hello:Hello" | xargs -d : -n 2
Hello Hello
Hello Hello 

二、在脚本中运用:

[root@host1 test]# cat echo.sh 
#!/bin/bash
echo $* '^-^'

当参数传递给echo.sh后,它会将这些参数打印出来,并且以"^-^"作为结尾:

[root@host1 test]# echo -e "Tom\nHarry\nJerry\nLucy" > args.txt
[root@host1 test]# cat args.txt | xargs bash echo.sh 
Tom Harry Jerry Lucy ^-^
[root@host1 test]# cat args.txt | xargs -n 2 bash echo.sh 
Tom Harry ^-^
Jerry Lucy ^-^ 

在上面的例子中,我们把参数源都放入args.txt文件,但是除了这些参数,我们还需要一些固定不变的参数,比如:

[root@host1 test]# bash echo.sh Welcome Tom 
Welcome Tom ^-^ 

在上述命令执行过程中,Tom是变量,其余部分为常量,我们可以从"args.txt"中提取参数,并按照下面的方式提供给命令:

[root@host1 test]# bash echo.sh Welcome Tom 
[root@host1 test]# bash echo.sh Welcome Herry
[root@host1 test]# bash echo.sh Welcome Jerry
[root@host1 test]# bash echo.sh Welcome Lucy 

这时我们需要使用xargs中-I命令:

[root@host1 test]# cat args.txt | xargs -I {} bash echo.sh Welcome {} 
Welcome Tom ^-^
Welcome Harry ^-^
Welcome Jerry ^-^
Welcome Lucy ^-^ 

-I {} 指定替换字符串,对于每一个命令参数,字符串{}都会被从stdin读取到的参数替换掉,

使用-I的时候,命令以循环的方式执行,如果有4个参数,那么命令就会连同{}一起被执行4次,在每一次执行中{}都会被替换为相应的参数。

三、结合find使用

xargs和find是一对非常好的组合,但是,我们通常是以一种错误的方式运用它们的,比如:

[root@host1 test]# find . -type f -name "*.txt" -print | xargs rm -f 

这样做是有危险的,有时会删除不必删除的文件,如果文件名里包含有空格符(' '),则xargs很可能认为它们是定界符(例如,file text.txt会被xargs误认为file和text.txt)。

如果我们想把find的输出作为xargs的输入,就必须将-print0与find结合使用以字符null('\0')来分隔输出,用find找出所有.txt的文件,然后用xargs将这些文件删除:

[root@host1 test]# find . -type f -name "*.txt" -print0 | xargs -0 rm -f 

这样就可以删除所有的.txt文件了,xargs -0 将\0作为输入定界符。

四、运用while语句和子shell

[root@host1 test]# cat files.txt | (while read arg ;do cat $arg;done)

这条命令等同于:

[root@host1 test]# cat files.txt | xargs -I {} cat {} 

在while循环中,可以将cat $arg替换成任意数量的命令,这样我们就可以对同一个参数执行多条命令,也可以不借助管道,将输出传递给其他命令,这个技巧适应于多种问题场景。子shell操作符内部的多个命令可作为一个整体来运行。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# linux  # xargs命令  # xargs命令详解  # -i  # Linux下强制杀死进程的方法详解  # Linux基础之xargs命令的入门实例  # Linux xargs kill进程 交叉查询方式  # 定界  # 转换成  # 就会  # 是有  # 多个  # 我们可以  # 这条  # 这样做  # 很可能  # 就可  # 自定义  # 作为一个  # 还需要  # 非常好  # 在上面  # 这篇文章  # 想把  # 谢谢大家  # 看看吧  # 会将 


相关文章: 盐城做公司网站,江苏电子版退休证办理流程?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  建站之星后台密码遗忘?如何快速找回?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  宝塔面板如何快速创建新站点?  如何选择靠谱的建站公司加盟品牌?  如何正确下载安装西数主机建站助手?  股票网站制作软件,网上股票怎么开户?  非常酷的网站设计制作软件,酷培ai教育官方网站?  平台云上自助建站如何快速打造专业网站?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  php json中文编码为null的解决办法  建站主机空间推荐 高性价比配置与快速部署方案解析  广州商城建站系统开发成本与周期如何控制?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  建站主机选择指南:服务器配置与SEO优化实战技巧  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  *服务器网站为何频现安全漏洞?  建站之星如何取消后台验证码生成?  网站设计制作企业有哪些,抖音官网主页怎么设置?  高端建站三要素:定制模板、企业官网与响应式设计优化  如何在建站宝盒中设置产品搜索功能?  深圳网站制作案例,网页的相关名词有哪些?  深圳网站制作的公司有哪些,dido官方网站?  如何快速搭建自助建站会员专属系统?  香港服务器选型指南:免备案配置与高效建站方案解析  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  如何高效完成独享虚拟主机建站?  如何用狗爹虚拟主机快速搭建网站?  淘宝制作网站有哪些,淘宝网官网主页?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  用v-html解决Vue.js渲染中html标签不被解析的问题  如何获取免费开源的自助建站系统源码?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  西安专业网站制作公司有哪些,陕西省建行官方网站?  学校为何禁止电信移动建设网站?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何通过PHP快速构建高效问答网站功能?  如何在阿里云购买域名并搭建网站?  动图在线制作网站有哪些,滑动动图图集怎么做?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何用5美元大硬盘VPS安全高效搭建个人网站?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。