Shell中cut字符截取、sort文本排序、uniq文本去重

Shell中cut字符截取、sort文本排序、uniq文本去重

cut

  • 描述

cut命令多用于字符截取

  • 用法
cat     [选项]     [文件]
  • 选项
-d                指定分隔符
-f  1,7|1-7       指定截取的列
-c  1,4|1-4       指定截取的字符位置
  • 实例
    以冒号(:)为分隔符,截取指定文件的第一列
[root@test ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
...   ...

以冒号(:)为分隔符,截取指定文件的第一列和第三列

[root@test ~]# cut -d: -f1,3 /etc/passwd
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
...   ...

以冒号(:)为分隔符,截取指定文件的第一列、第二列和第三列

[root@test ~]# cut -d: -f1,2,3 /etc/passwd
root:x:0
bin:x:1
daemon:x:2
adm:x:3
lp:x:4
sync:x:5
shutdown:x:6
...   ...

sort

  • 描述

用于将文本的行排序,默认情况下(不加参数)sort命令是按照字符串的字母顺序排序

  • 用法
Usage: sort [OPTION]... [FILE]...
  or:  sort [OPTION]... --files0-from=F
  • 参数
参数 用法
-n 纯数字排序
-r 倒序
-u 全局去重
-o 输出到指定文件中
-t 指定分隔符
-k 指定要排序的列

默认情况下,sort命令将文件内容按字母顺序排序

[root@test ~]# sort /etc/passwd
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
... ...

将文件内容按字母顺序 倒序 排序

[root@test ~]# sort -r /etc/passwd
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
unbound:x:995:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin
tom:x:1001:1001::/home/tom:/bin/bash
tcpdump:x:72:72::/:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
student:x:1000:1000:Student User:/home/student:/bin/bash
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
saslauth:x:994:76:"Saslauthd user":/run/saslauthd:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
...  ...

将sort排序后输出到指定文件

[root@test ~]# sort  /etc/passwd   -o   test
[root@test ~]# cat test
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
...   ...

以冒号(:)为分隔符,指定第三列且按照纯数字进行排序

[root@test ~]# sort -t: -k3n /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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
...   ...

去掉重复数字排序

[root@test ~]# cat test 
123
321
123
qwer
[root@test ~]# sort -u test 
123
321
qwer

uniq

  • 描述

用于移除或发现文件中的重复的条目,即对重复字符做相应的处理

  • 用法
uniq   [OPTION]...   [INPUT [OUTPUT]]
  • 选项
 -u     显示唯一的行
 -d     显示重复的行
 -c     每行显示一次并统计重复次数
  • 实例

编辑原文件

[root@test ~]# cat test 
aaa
aaa
bbb
bbb
bbb
ccc

使用 uniq 命令,不加选项时,它只输出没有重复的行

[root@test ~]# uniq test 
aaa
bbb
ccc

统计重复行出现的次数

[root@test ~]# uniq -c test 
      2 aaa
      3 bbb
      1 ccc

只显示文件中 有重复 的行并只显示一次

[root@test ~]# uniq -d test 
aaa
bbb

只显示文件中 有重复 的行但显示重复的全部

[root@test ~]# uniq -D test 
aaa
aaa
bbb
bbb
bbb

只显示文件中 不重复 的行

[root@test ~]# uniq -u test 
ccc

使用 -w 选项,可以限制 uniq 命令只比较每行的前 N 个字符。

修改原文件如下

[root@test ~]# cat test 
aaa  bbb
aaa  ccc
bbb  aaa
bbb  ccc
ccc  ccc

限制 uniq 命令只比较每行的前3个字符是否重复

[root@test ~]# uniq  -w  3 test 
aaa  bbb
bbb  aaa
ccc  ccc

使用-s选项,可以避免 uniq 命令比较每行的前 N 个字符,即跳过每行的前N个字符,只比较后面的字符。

避免 uniq 命令比较每行的前3个字符,只比较后面的字符是否重复

[root@test ~]# uniq -s 3 test 
aaa  bbb
aaa  ccc
bbb  aaa
bbb  ccc

使用-f选项,可以避免 uniq 命令比较前 N 列,即跳过前N列(这里列以空格分隔),只比较后面的字符

避免 uniq 命令比较第一列的内容,只比较后面的字符是否重复

[root@test ~]# uniq -f 1 test 
aaa  bbb
aaa  ccc
bbb  aaa
bbb  ccc

注意:uniq命令只能去重相邻行!!!

[root@test ~]# cat test
aaa
aaa
bbb
bbb
bbb
ccc
[root@test ~]# cat test01 
aaa
aaa
bbb
bbb
bbb
ccc
aaa
[root@test ~]# uniq test
aaa
bbb
ccc
[root@test ~]# uniq test01 
aaa
bbb
ccc
aaa

猜你喜欢

转载自blog.csdn.net/sunny_future/article/details/80327704
今日推荐