7.shell实用的小工具cut等

一,cut 工具

cut :列截取工具

1.1作用

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出

如果不指定 File(文件) 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一

1.2常用选项

-b:按字节截取
-c:按字符截取,常用于中文
-d:指定以什么为分隔符截取,默认为制表符(空格)
-f:通常和-d一起

1.3 cut使用,例

##打印以冒号为分割的第一列
[root@qjm ky20]# cat /etc/passwd | cut -d':' -f 1
root
bin
daemon

##打印以冒号为分割的第一和第三列,他会加上 : 而awk不会
[root@qjm ky20]# cat /etc/passwd | cut -d':' -f1,3
root:0
bin:1
daemon:2

##打印以冒号为分割的第一列到第三例
[root@qjm ky20]# cat /etc/passwd | cut -d':' -f1-3
root:x:0
bin:x:1
daemon:x:2
##按字节截取,截取每个目录第一个字节,也可以采用 - ,的方式,(-是到) (,是和)
[root@qjm ky20]# who
root     pts/1        2022-07-07 13:35 (192.168.113.1)
root     :0           2022-07-06 09:01 (:0)
[root@qjm ky20]#  who | cut -b 1
r
r
##按字符截取,常用于中文 -c,截取妹个目录第二个字节,也可以采用 - ,的方式,(-是到) (,是和)
[root@qjm ~]# ls 
   公共 模板 视频  
[root@qjm ~]# ls ./ | cut -c 2
共
板
频

注:cut 只擅长于处理单个字符为间隔的文本

二,sort 工具

2.1作用

是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。例如数据和字符的排序就不一样

2.2格式 常用选项

sort [选项] 参数

常用选项:
-t:指定分隔符,默认使用[Tab]吧 键或空格分隔

-k:指定排序区域,哪个区间排序

-n:按照数字进行排序,默认是以文字形式排序

-u:等同于 uniq,表示相同的数据仅显示一行,注意:如果行尾有空格去重就不成功

-r:反向排序,默认是升序,-r就是降序

-o:将排序后的结果转存至指定文件

2.3 sort使用,例

1.不加任何选项默认按第一列升序,字母的话就是从a到z由上

##显示的太多就不展示效果了自己试
sort passwd

2.以冒号为分隔符,以数字大小对第三列排序(升序)

sort -n -t: -k3 passwd

3.以冒号为分隔符,以数字大小对第三列排序(降序)

sort -rn -t: -k3 passwd

4.将输结果不在屏幕上输出而是输出到passwd文件

sort -nr -t: -k3 passwd -o passwd.txt 

5.去掉文件中重复的行(重复的行可以是不连续的)

sort -u passwd

三,uniq 工具

3.1作用

主要用于去除连续的重复行
注意:是连续的行,所以通常和sort结合使用先排序使之变成连续的行再执行去重操作,否则不连续的重复行他不能去重

3.2格式 常用选项

-c:对重复的行进行计数
-d:仅显示重复行
-u:仅显示出现一次的行

3.3 uniq 使用,例

1.创建一个水果类型的文件,一共9行内容
apple

[root@qjm ky20]#  cat fruit 
apple
apple
peache
pear
banana
cherry
cherry
banana
orange

2.结合sort使用,按顺序对重复行进行计数

[root@qjm ky20]#  cat fruit | sort | uniq -c  
      2 apple
      2 banana
      2 cherry
      1 orange
      1 peache
      1 pear

3.结合sort使用,过滤出重复行

[root@qjm ky20]#  cat fruit | sort | uniq -d   
apple
banana
cherry

4.结合sort使用,过滤出不重复的行

[root@qjm ky20]#  cat fruit | sort | uniq -u  
orange
peache
pear

5.结合sort使用,去重

root@localhost ~]# cat fruit | sort | uniq      
apple
banana
cherry
orange
peache
pear

6.查看登陆用户

[root@qjm ky20]#  who
root     :0           2021-04-29 00:09 (:0)
root     pts/0        2021-04-29 00:09 (:0)
root     pts/1        2021-06-10 01:32 (192.168.245.1)
[root@qjm ky20]#  who | awk '{print $1}'
root
root
root
[root@qjm ky20]#  who | awk '{print $1}'| uniq
root

7.查看登陆过系统的用户

[root@qjm ky20]#  last | awk '{print $1}' | sort | uniq | grep -v "^$" | grep -v wtmp
reboot
root
shengjie

四,tr 工具

4.1作用

它可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符

4.2格式 常用选项

格式:

tr [选项]… SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出

常用选项:

-d 删除字符
-s 删除所有重复出现的字符,只保留第一个

4.3 tr 使用 例

1.将查看文件中的所有小写字母替换为大写,仅展到界面,不影响文件内容以下都是

[root@qjm ky20]#  cat fruit | tr 'a-z' 'A-Z'
APPLE
APPLE
PEACHE
PEAR
BANANA
CHERRY
CHERRY
BANANA
ORANGE

2.将查看文件仅替换是一一对应的字母的替换

[root@qjm ky20]#  cat fruit | tr 'apple' 'APPLE' 
APPLE
APPLE
PEAchE
PEAr
bAnAnA
chErry
chErry
bAnAnA
orAngE

3.把替换的字符用单引号引起来,包括特殊字符,把所有带有a的替换为 “ 空格 / ”也就是特殊字符

[root@qjm ky20]#  cat fruit | tr 'a' ' '   
 pple
 pple
pe che

[root@qjm ky20]#  cat fruit | tr 'a' '/'   
/pple
/pple
pe/che

4.把多个字符替换成一个特殊符号

[root@qjm ky20]#  cat fruit | tr 'ap' '/' 
///le
///le
/e/che
/e/r
b/n/n/
cherry
cherry
b/n/n/
or/nge

5.a替换成s,p替换成a,le替换成r

[root@qjm ky20]#  cat fruit | tr 'apple' 'star'    
saarr
arschr
arsr
bsnsns
chrrry
chrrry
bsnsns

6.加入-d 删除所有a

[root@qjm ky20]#  cat fruit | tr -d 'a'    
pple
pple
peche
per
bnn
cherry
cherry
bnn

7.把所有含有这5个字母的都删除

[root@qjm ky20]#  cat fruit | tr -d 'apple'    


ch
r
bnn
chrry
chrry
bnn
  1. 删除换行符
[root@qjm ky20]#  cat fruit | tr -d '\n'  
appleapplepeachepearbananacherrycherrybanana

9.对p字符去重,只保留第一个,加入-s

[root@qjm ky20]#  cat fruit | tr -s 'p'  
aple
aple
peache
pear
banana
cherry
cherry
banana

10.遇到多个回车只保留一个回车,相当于去除空行

[root@qjm ky20]#  cat fruit | tr -s '\n'
apple
apple
peache
pear
banana
cherry
cherry
banana

cat fruit | tr -d ‘\n’

appleapplepeachepearbananacherrycherrybanana


9.对p字符去重,只保留第一个,加入-s

```bash
[root@qjm ky20]#  cat fruit | tr -s 'p'  
aple
aple
peache
pear
banana
cherry
cherry
banana

10.遇到多个回车只保留一个回车,相当于去除空行

[root@qjm ky20]#  cat fruit | tr -s '\n'
apple
apple
peache
pear
banana
cherry
cherry
banana

猜你喜欢

转载自blog.csdn.net/weixin_61269220/article/details/125726936