LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 158|回复: 0

管道和过滤器

[复制链接]
发表于 2024-1-3 16:26:57 | 显示全部楼层 |阅读模式

管道和过滤器


管道
shell可以将两个或读个程序连接到一起,以使一个程序的输出变为下一个程序的输入,以这种方式连接的两个或多个程序就形成了管道,管道通常用于执行一些复杂的数据处理操作,这些命令之间使用控制操作符(管道符)”|”连接,大部分linux命令都可以用来形成管道。

语法格式如下:

command1|command2

管道也可以连接重定向语句,可以使用重定向操作符>或>>将管道中最后一个命令的标准输出进行重定向,语法如下:

command1 |command2|…|commandN >output.txt

过滤器
将几个命令通过管道符组合在一起就形成一个管道,而这些组成管道的命令通常称为过滤器,过滤器会获取输入,修改内容,然后将其输出。

常被用作过滤器使用的命令如下:

awk用于文本处理,通常被作为数据提取和报告的工具
cut用于将每个输入文件(如果没有指定文件则为标准输入)的每行的指定部分输出到标准输出
grep用于搜索一个或多个文件中匹配指定模式的行
tar用于归档文件的应用程序
head用于读取文件的开头部分(默认10行),如果没有指定文件,则从标准输入读取
paste用于合并文件的行
sed用于过滤和转换文本的流编辑器
sort用于对文本文件的行进行排序
split用于将文件分割成块
strings用于打印文件中可打印的字符串
tac与cat命令的功能相反,用于倒序的显示文件或连接文件
tail用于显示文件的结尾部分
tee用于从标准输入读取内容并写入到标准输出和文件,默认重写文件内容,使用-a选项可以追加写入。
tr用于转换或删除字符
uniq用于报告或忽略冲入的行
wc用于打印文件中的总行数、单词数或字节数
下面列出一些例子


#跨网络的复制一个目录的整体结构
tar -cf - /home/test | ssh remote_host "(cd /backup/;tar xf -)"
#替换打印输出的文本的内容,sed是流编辑器的简称,下面命令中使用echo产生一个单词文本流,通过管道发送到sed命令,最后进行替换
echo front | sed 's/front/back/'
back
#显示文件at.txt中除第1-2行的内容
cat -n at.txt |sed '1,2d'
     3  a b c d e
#只显示文件at.txt第1-2行的内容
cat -n at.txt |sed -n '1,2p'
     1  1 2+3 4 5
     2  6 7 8 9 0
#将ll命令列出的文件按照文件大小排序,k5指按照第五列(文件大小数字)排序
ll |sort -r -n -k5
#将backup目录按每5兆大小进行打包压缩,生成的压缩文件名前缀为backup.tar.gz
tar czf -backup | split -b 5m - backup.tar.gz
#删除前一行命令输出中的所有数字
echo "my age is 18"|tr -d '0-9'
my age is
#显示输出中各重复的行出现的次数,并按次数多少倒序显示
sort testfile |uniq -c |sort -nr

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表