linux管道_tee_xargs

5.2 管道

管道命令可以将多条命令组合起来,一次性完成复杂的处理任务。
语法:
command1  |  command2  |  command3...

例: 查看passwd中最后3行内容。

cat /etc/passwd  | tail -3

查看passwd中包含root所在行的第一条信息。

cat /etc/passwd  |  grep  "root"  |  head -1

5.2.1 tee

用于读取标准输入的数据,并将其内容输出成文件。
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

tee命令的基本语法如下:

tee [-ai][文件...]

参数说明

  • -a或--append  附加到既有文件的后面,而非覆盖它.

  • -i或--ignore-interrupts  忽略中断信号。

例:

将cat查看结果放到文件file1.txt中,并在终端显示最后一行。

cat /etc/passwd | tee file1.txt | tail -1
​
cat file1.txt

查看passwd中包含root所在行的信息,并将其结果放入file1.txt中

cat /etc/passwd  | grep  "root" | head -l
cat /etc/passwd  | grep  "root" | tee file1.txt

使用指令"tee"将用户输入的数据同时保存到文件"file1"和"file2"中。

tee file1 file2                   #在两个文件中复制内容 

同时打印到屏幕和文件里。

ls -l | tee -a file1.log

把错误输出也同时打印到屏幕和文件。

ls -l not_find_runoob 2>&1 | tee -a file1.log
# 2>&1 意思就是把标准报错也作为标准输出

5.2.2 xargs

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
​
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
​
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
​
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
​
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
​
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令

xargs命令的基本语法如下:

command | xargs -item  command

参数说明

  • -a file 从文件中读入作为 stdin

  • -e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。

  • -p 当每次执行一个argument的时候询问一次用户。

  • -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。

  • -t 表示先打印命令,然后再执行。

  • -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。

  • -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。

  • -s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。

  • -L num 从标准输入一次读取 num 行送给 command 命令。

  • -l 同 -L。

  • -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。

  • -x exit的意思,主要是配合-s使用。

例1:

创建文件file1-5

touch /root/data1/file{1..5}

在文件files.txt中写入以下内容

/root/data1/file1
/root/data1/file3
/root/data1/file5

删除files.txt文件中指定路径的文件

cat files.txt | rm -rvf
ls /root/data1      # 无法执行成功
cat files.txt | xargs rm -rvf
ls /root/data1      # 成功删除

例2:

xargs 用作替换工具,读取输入数据重新格式化后输出。

定义一个测试文件,内有多行文本数据:

cat test.txt
​
a b c d e f g
h i j k l m n
o p q
r s t
u v w x y z

多行输入单行输出:

cat test.txt | xargs
​
a b c d e f g h i j k l m n o p q r s t u v w x y z

-n 选项多行输出:

cat test.txt | xargs -n3
​
a b c
d e f
g h i
j k l
m n o
p q r
s t u
v w x
y z

-d 选项可以自定义一个定界符:

echo "nameXnameXnameXname" | xargs -dX
​
name name name name

结合 -n 选项使用:

echo "nameXnameXnameXname" | xargs -dX -n2
​
name name
name name

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/198352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA串口接收解帧、并逐帧发送有效数据——1

FPGA串口接收解帧、并逐帧发送有效数据 工程实现的功能:FPGA串口接收到串口调试助手发来的数据,将其数据解帧。判断到正确的帧头和帧尾之后,将有效数据存入rx_data中;另一方面发送端将有效数据逐帧发送出去。 参考:正…

RAG落地实践、AI游戏开发、上海·深圳·广州线下工坊启动!星河社区重磅周

飞桨星河社区在成立的5年以来,已汇集660万AI开发者,覆盖深度学习初学者、在职开发者、企业开发者、高校教师、创业者等,已成为AI领域最具影响力的社区之一,无论是AI爱好者还是AI开发者,都能在这里探索AI的无限可能。飞…

城市分站建站系统源码 全新版本SEO推广优化排名高 附带完整的搭建教程

在过去的几年中,许多企业在建立网站时面临一些共同的问题:缺乏技术支持、不懂SEO、预算有限等。这些问题导致他们的网站无法充分发挥作用,无法在搜索引擎中获得良好的排名,进而影响到企业的业务发展。小编来给大家分享一款城市分站…

编译原理词法分析:NFA转DFA(原理+完整代码+可视化实现)

NFA转换为DFA 【本文内容摘要】 什么是DFA通过子集构造法将NFA转换为DFA生成DFA的dot文件并且形成可视化。 如果本文对各位看官有用的话,请记得给一个免费的赞哦(收藏也不错)! 文章目录 NFA转换为DFA一、什么是DFA二、NFA转换为…

k8s引用环境变量

一 定义环境变量 ① 如何在k8s中定义环境变量 env、configmap、secret补充: k8s 创建Service自带的环境变量 ② 从pod属性中获取 kubectl explain deploy.spec.template.spec.containers.env.valueFrom关注: configMapKeyRef、fieldRef 和 resour…

初探Maven

文章目录 一、Maven概述二、安装配置Maven(一)下载Maven(二)安装Maven(三)配置Maven 三、IDEA里配置Maven(一)版本情况说明(二)配置构建工具Maven 一、Maven概…

如何批量修改ppt中的字体?

ppt制作已经属于是复杂的操作了,当我们想要更换ppt中的字体,有没有什么快捷的方法呢?今天分享两个方法,一键修改ppt文件字体。 方法一: 找到功能栏中的编辑选项卡,点击替换 – 替换字体,在里面…

python加速方法:纯CPU多进程加速(joblib库)

我写C 代码喜欢用OpenMP进行加速,在不更改源代码情况下只做稍稍修改即可实现CPU利用率最大化,跨平台移植也没有问题。 python是个好东西,苦恼于密级计算的时候只能使用单核,使用多线程不奏效,因为毕竟它受限于语言本身…

【Go】Go语言基础内容

变量声明: 变量声明:在Go中,变量必须先声明然后再使用。声明变量使用 var 关键字,后面跟着变量名和类型,如下所示: var age int这行代码声明了一个名为 age 的整数变量。 变量初始化:您可以在声…

二叉树遍历 LeetCode 1038. 从二叉搜索树到更大和树

1038. 从二叉搜索树到更大和树 给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 从图中可以看出,每个节点是BST右中左遍历时,遍历到的节点的值加上之前所有节点的值。 在遍历时可以使…

全球与中国木质颗粒燃料市场:增长趋势、竞争格局与前景展望

木质颗粒汽油的主要优点之一是环境永续性。木质颗粒被认为是碳中立的,因为燃烧过程中释放的二氧化碳量大约等于木材生长过程中吸收的二氧化碳量。这种封闭的碳循环减少了温室气体净排放并减轻了气候变迁的影响。作为一种可再生资源,木屑颗粒还可以透过促…

Python必备神器揭秘:15个最热门库全解析

更多资料获取 📚 个人网站:ipengtao.com Python生态系统中拥有大量优秀的库,为开发者提供了广泛且强大的工具。本文将介绍15个最受欢迎的Python库,包括它们的功能、优点以及示例代码,帮助读者更全面地了解和使用这些库…

spring boot mybatis TypeHandler 源码如何初始化及调用

目录 概述使用TypeHandler使用方式在 select | update | insert 中加入 配置文件中指定 源码分析配置文件指定Mapper 执行query如何转换 结束 概述 阅读此文 可以达到 spring boot mybatis TypeHandler 源码如何初始化及如何调用的。 spring boot 版本为 2.7.17,my…

深入理解Go语言GC机制

1、Go 1.3之前的标记-清除(mark and sweep)算法 Go 1.3之前的时候主要用的是普通的标记-清除算法,此算法主要由两个主要的步骤: 标记(Mark phase)清除(Sweep phase) 1&#xff09…

7.Vue UI库

7.Vue UI库 7.1移动端常用的UI库 (1) Vant:Vant 4 - A lightweight, customizable Vue UI library for mobile web apps.A lightweight, customizable Vue UI library for mobile web apps.https://vant-ui.github.io/vant/#/zh-CN &#xf…

提升--22---ReentrantReadWriteLock读写锁

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 ReadWriteLock----读写锁1.读写锁介绍线程进入读锁的前提条件:线程进入写锁的前提条件:而读写锁有以下三个重要的特性: Reentran…

个体诊所电子处方系统哪个好用,推荐一款可以自由设置配方模板能够填写病历可以查询历史病历的门诊处方笺软件

一、前言 1、功能实用,操作简单,不会电脑也会操作,软件免安装,已内置数据库。 2、中医西医均可用此软件开电子处方,支持病历记录查询,药品进出库管理,支持配方模板一键导入电子处方。 二、电子…

Amazon CodeWhisperer 正式可用, 并面向个人开发者免费开放

文章作者:深度-围观 北京——2023年4月18日,亚马逊云科技宣布,实时 AI 编程助手 Amazon CodeWhisperer 正式可用,同时推出的还有供所有开发人员免费使用的个人版(CodeWhisperer Individual)。CodeWhisperer…

SAP ABAP Tree Control 对象与ALV Grid 对象关联

Tree Control 对象与ALV Grid 对象关联 在双击 Tree 对象时,变更ALV Trid 对象的显示,实现界面如图9-11 所示。 Screen 设计界面如图9-12 所示。 主程序: REPORT ytest36. DATA: ok_code TYPE sy-ucomm,save_ok TYPE sy-ucomm. DATA: wa_co…

【C++】map和set的使用及注意事项

map和set的使用及注意事项 1.关联式容器2. 键值对3.set3.1接口介绍3.1.1构造3.1.2迭代器3.1.3容量3.1.4修改 3.2set使用及注意事项 4.multiset5.map6.multimap349. 两个数组的交集 1.关联式容器 在初阶阶段,我们已经接触过STL中的部分容器,比如&#xf…