基本命令(补)

一.tr基本功能转换

1.格式

tr [选项]… SET1 [SET2]

SET 是一组字符串,一般都可按照字面含义理解

-d 删除

-s 压缩

-c 只留我匹配的字符

[root@localhost ~]# tr 1234   qwer
1u5h3v6k2p4n
qu5hev6kwprn
#只要出现1234的数字就对应换成qwer#
[root@localhost ~]# tr 12345  ert
123456789
erttt6789
#用ert去替换12345数字,但是因为替换内容不够5位,所以不够位数上都用最后一位t补全#
在3.txt中找到4就删除
[root@localhost ~]# cat /zhou/3.txt|tr -d 4
656
33232
5353533
3232
32322
552332
323235
55336
3232


把大空格替换成小空格,或者把大空格压缩成一个空格
[root@localhost ~]# tr -s " " 
4         6          3          7
4 6 3 7

在输入中寻找指定的字符,使其相邻重复的合并成一个字符
[root@localhost ~]# tr -s "3"
3333
3
63 8483 9373  37827
63 8483 9373  37827
33  763 8623
3  763 8623


二.管道符的应用

A|B,A执行完的结果传给B进行完成,单向,不可逆的

50个自然数连加
[root@localhost ~]# seq -s+ 50|bc 
1275

生成随机密码
[root@localhost ~]# cat /dev/urandom |tr -dc '[:alnum:]' |head -c12
UuDYma0H39TP[root@localhost ~]# cat /dev/urandom |tr -dc '[:alnum:]' |head -c12
Fv7gxQvffptl
在1.txt文件中找到a-z小写字母,其他都删除
[root@localhost ~]# cat /zhou/1.txt |tr -c "[a-z]" " "
                             jgfghh   fhfhhfdg    gdfdgdgfgdfg     gdfg tt t wt t er gfdf h fh    y er rgdf g df   [root@localhost ~]# 
  加s对空白地方进行压缩
[root@localhost ~]# cat /zhou/1.txt |tr -sc "[a-z]" " "
 jgfghh fhfhhfdg gdfdgdgfgdfg gdfg tt t wt t er gfdf h fh y er rgdf g df [root@localhost ~]# 

三.cut命令

cut 命令可以提取文本文件数据的指定列

格式

cut [选项]… [文件]…

常用选项
-d DELIMITER: 指明分隔符,默认tab
-f 想要获取的字段
#: 第#个字段,例如 3
#,#[,#]:离散的多个字段,例如 1,4,6
#-#:连续的多个字段, 例如 1-7
混合使用:1-4,7
-c 取字符

在用户文件中找到最后一行,提取1,3段
[root@localhost ~]# cat /etc/passwd|tail -n 1|cut -d: -f1,3 
zhou:1000

[root@localhost ~]# ll |tail -n +2
-rw-------. 1 root root 2193 Sep 17 09:41 anaconda-ks.cfg
-rw-r--r--. 1 root root  141 Sep 17 14:53 bc
drwxr-xr-x. 2 root root    6 Sep 17 09:52 Desktop
drwxr-xr-x. 2 root root    6 Sep 17 09:52 Documents
drwxr-xr-x. 2 root root    6 Sep 17 09:52 Downloads
-rw-r--r--. 1 root root 2241 Sep 17 09:52 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Sep 17 09:52 Music
drwxr-xr-x. 2 root root    6 Sep 17 09:52 Pictures
drwxr-xr-x. 2 root root    6 Sep 17 09:52 Public
drwxr-xr-x. 2 root root    6 Sep 17 09:52 Templates
drwxr-xr-x. 2 root root    6 Sep 17 09:52 Videos
想要只显示3列和9列,首先从第2行开始,压缩所有空格为一个空格,并以空格为标识符,
[root@localhost ~]# ll |tail -n +2|tr -s " "|cut -d" "  -f3,9
root anaconda-ks.cfg
root bc
root Desktop
root Documents
root Downloads
root initial-setup-ks.cfg
root Music
root Pictures
root Public
root Templates
root Videos

只要查看各分区使用百分比
[root@localhost ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root  31441920 3560892  27881028  12% /
devtmpfs                  1916740       0   1916740   0% /dev
tmpfs                     1932652       0   1932652   0% /dev/shm
tmpfs                     1932652    9280   1923372   1% /run
tmpfs                     1932652       0   1932652   0% /sys/fs/cgroup
/dev/sda1                15718400  182360  15536040   2% /boot
/dev/mapper/centos-home  15718400   33052  15685348   1% /home
/dev/mapper/centos-var   15718400  159124  15559276   2% /var
tmpfs                      386532       4    386528   1% /run/user/42
tmpfs                      386532      24    386508   1% /run/user/0
/dev/sr0                    57192   57192         0 100% /run/media/root/VMware Tools
第一种  从第2行显示并压缩空格为1个空格,以空格为标识符,显示第五列,并删除%
[root@localhost ~]# df |tail -n +2|tr -s " " |cut -d " " -f5|tr -d %
12
0
0
1
0
2
1
2
1
1
100
第二种  从第二行显示,用%替换空格键并合并成一个,然后以%为标识符显示第5行
[root@localhost ~]# df|tail -n +2 |tr -s " " % |cut -d % -f5
第三种从第二行开始显示,并显示第53 54和55字符
[root@localhost ~]# df |tail -n +2 |cut -c53,54,55
 12
  0
  0
  1
  0
  2
  1
  2
  1
  1
100


字符可通过选择复制该行字符,在shell左下角会有显示字符位置
在这里插入图片描述

四.paste合并命令

-d 指定分隔符

正常同时打开2个文档是这样显示的
[root@localhost zhou]# cat 1.txt 2.txt
sdf
dgdf
hhhd
4353455345
7657567
56546546
然后用paste命令侯
[root@localhost zhou]# paste 1.txt 2.txt
sdf	4353455345
dgdf	7657567
hhhd	56546546
用“/”作为分隔符进行隔开
[root@localhost zhou]# paste -d/ 1.txt 2.txt
sdf/4353455345
dgdf/7657567
hhhd/56546546


五. sort排序

sort [options] file(s)

把整理过的文本显示在屏幕上,不改变原始文件

-r 执行反方向(由上至下)整理
-R 随机排序
-n 执行按数字大小整理
-h 人类可读排序,如: 2K 1G
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique),合并重复项,即去重
-t 指定分隔符
-k 指定列

[root@localhost zhou]# sort -t: -k3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
zhou:x:1000:1000:ZHOU:/home/zhou:/bin/bash
qemu:x:107:107:qemu user:/:/sbin/nologin
这里是按第三列排序是按每个字符排序,因为0比7在前所以1000排在107之前
加入-n后就可以执行数字大小排列了 -nr是按数字倒序排列
[root@localhost zhou]# sort -t: -k3 -n /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@localhost zhou]# sort -t: -k3 -nr /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
zhou:x:1000:1000:ZHOU:/home/zhou:/bin/bash
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin

查看硬件使用情况
[root@localhost zhou]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root  31441920 3560824  27881096  12% /
devtmpfs                  1916740       0   1916740   0% /dev
tmpfs                     1932652       0   1932652   0% /dev/shm
tmpfs                     1932652    9228   1923424   1% /run
tmpfs                     1932652       0   1932652   0% /sys/fs/cgroup
/dev/sda1                15718400  182360  15536040   2% /boot
/dev/mapper/centos-home  15718400   33052  15685348   1% /home
/dev/mapper/centos-var   15718400  154784  15563616   1% /var
tmpfs                      386532       0    386532   0% /run/user/0
tmpfs                      386532      12    386520   1% /run/user/42
从第2行开始显示,用%替代所有空格 并压缩成一个 显示第5段,按数字大小正序排列,显示头一个
[root@localhost zhou]# df |tail -n +2 |tr -s " " % |cut -d % -f5|sort -n |head -1
0
从第2行开始显示,用%替代所有空格 并压缩成一个 显示第5段,按数字大小倒序排列,显示头一个
[root@localhost zhou]# df |tail -n +2 |tr -s " " % |cut -d % -f5|sort -nr |head -1
12

六. 去重uniq

uniq [OPTION]… [FILE]…

-c: 显示每行重复出现的次数

-d: 仅显示重复过的行

-u: 仅显示不曾重复的行

uniq常和sort 命令一起配合使用:

不加任何参数使用uniq 只是把相邻重复的行去除
[root@localhost zhou]# cat 4.txt
4
7
4
6
6
3
2
1
8
8
[root@localhost zhou]# uniq 4.txt
4
7
4
6
3
2
1
8

-d: 仅显示重复过的行
[root@localhost zhou]# uniq -d 4.txt
6
8

-u: 仅显示不曾重复的行
[root@localhost zhou]# uniq -u 4.txt
4
7
4
3
2
1

-c: 显示每行重复出现的次数
[root@localhost zhou]# uniq -c 4.txt
      1 4
      1 7
      1 4
      2 6
      1 3
      
      1 2
      1 1
      2 8

###面试题,查看访问日志,找出访问前10名的用户,
[root@localhost ~]#cat log|cut -d" " -f1|sort|uniq -c|sort -nr |head
查看访问日志,以空格为界 取第一列,排序,显示每个ip重复次数,倒序排列 显示前10

#面试题 取两个文件一样或不一样的字段

[root@localhost zhou]# cat 5.txt 6.txt
1
2
3
2
b
3
1
c
a

[root@localhost zhou]# cat 5.txt 6.txt |uniq -d
没有任何结果
[root@localhost zhou]# cat 5.txt 6.txt |sort |uniq -d
1
2
3
这里显示的还是5.txt文件内容并不是希望查询到的结果
等同于
[root@localhost zhou]# grep -f 5.txt 6.txt |sort
1
2
3
[root@localhost zhou]# cat 5.txt 6.txt |sort |uniq -u
a
b
c
只能用-u显示不曾重复的显示出来才行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值