与管道相关的几个命令处理

本文详细介绍如何使用Bash脚本中的管道、cut、grep、sort、uniq、wc、tee、tr、col、join、paste、expand、split、xargs等命令处理数据,包括数据截取、过滤、排序、统计、分割、合并等多种操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果我们需要获取数据,而原始数据需要经过一系列的过滤、分析、处理后才是我们需要的,那么bash脚本里,需要使用管道"|"来处理。

管道只处理前一个命令输出到stdout的信息。管道处理是以行为单位(段)来处理前一个命令的输出,以回车换行为标致。

(一)部分截取cut

截取命令是针对一行一行来进行的。

cut 指定分隔符进行分割,然后指定截取哪些“域”(列),在处理多空格的时候有些麻烦。

-d :指定分隔字符。
-f :-d分隔后,截取哪些列,从1开始。
-c :以字符 为单位取出固定字符区间,-c 12-20表示取12个字符到20个字符之间的段

(二)整行过滤截取grep

grep命令,分析一行中,如果有我们想要的信息,就将改行整个取出来

-a :将 binary 档案以 text 档案的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行

(三)排序sort

默认以第1列来排序,按字符顺序排序,常见参数如下:

-f :忽略大小写 
-b :忽略最前面的空格;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :按数字进行排序(默认以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :指定分隔符,默认 tab ;
-k :以那个区间 (field) 来进行排序的意思

(四)相同元素统计uniq,

通常在sort后,重复的信息行删掉,只显示一项,参数如下:

-i :忽略大小写字符的不同;
-c :进行计数

(五)统计wc,

统计文件里信息有多少行、多少字符、多少字,参数如下:

-l 行

-w 字

-m 字符

(六)tee

处理的数据流双向导出,处理数据流既想导出到文件,又想在管道里继续处理,使用 tee

tee [-a] file
ifconfig |grep mtu |cut -d ':' -f 1|tee ifname.txt |awk '{print $1}'

 

(七)tr

对信息流进行删除字符或替换字符 tr

参数:
-d :删除信息流中的某个字符串
-s :取代掉重复的字符

(八)col

tab键和空格键的相互替换 col

-x  将对等数量的tab转成空格

-h 将对等数量的空格转成tab

 

(九)join命令

合并文件,如果2个文件有相同类型&值的列,通过相同列将这2个文件联合起来,以便以后处理

-t :join 默认以空格符分隔数据,并且比对第一列字段为合并相同列,如果两个档案相同,则将两笔数据联成一行,且第一个字段放在第一个。
-i :忽略大小写
-1  x:第一个文件以第x列作为合并相同列
-2  y:第一个文件以第x列作为合并相同列

如:

join -t ':' -1 1 -2 1 /etc/passwd /etc/shadow

 

(十)paste

将两个文件,以行为单位,直接粘贴在一起

-d :指定分隔字符,默认 [tab] 来分隔的!
- :如果 file 部分写成 - ,表示其中一个文件来自standard output。

如下   标识将a.config ,b.config,c.config 合在一起

cat a.config |paste b.config c.config

 

 

(十一)expand

将 [tab] 按键转成空格键

-t :后面可以接数字,标识替换为多少个空格

cat /etc/man.config |expand -t 4 |cat –A

 

 

(十二)split 分割文档

-b 按大小来分割,单位是b k m

-l 按行数来分割

 

(十三)xargs 参数代换

xargs 可以读入 stdin 的数据,并且以空格符或断行字符作为分辨,将 stdin 的资料分隔成为 arguments。xargs 后面没有接任何的指令时,默认是以 echo 来进行输出

cut -d':' -f1 < /etc/passwd |head -n 3| xargs finger

 

 

(十四)减号 - 的用途

某些指令需要用到文件名称 (例如 tar) 来进行处理时,该 stdin 与 stdout 可以利用减号 "-" 来替代。

管道前一个 减号 表示:将passwd压缩结果发送到标准输出,管道后的 减号,表示从标准输入上获取压缩流,进行解压。

tar -cvf - /etc/passwd | tar -xvf -

转载于:https://www.cnblogs.com/blue-sea-sky/p/5478828.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值