用来截取某一个字段
语法:cut -d ‘分隔字符’ [-cf] n(这里的n是数字)
[root@centos-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2
root:x
bin:x
[root@centos-01 ~]# cat /etc/passwd |head -2 |cut -c 1-4
root
bin:
sort用做排序。如果sort不加任何选项,则从首字符向后,依次按ASCII码值进行比较,最后按升序输出。
语法:sort [-t 分隔符] [-kn1,n2] [-nru](这里的n1 < n2)
[root@centos-01 ~]# sort /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
[root@centos-01 ~]# head /etc/passwd > 1.txt
[root@centos-01 ~]# sort 1.txt
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
[root@centos-01 ~]# sort -r 1.txt
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
用于统计文档的行数、字符数、词数,常用的选项为:
[root@centos-01 ~]# wc -l 1.txt
10 1.txt
[root@centos-01 ~]# wc -m 1.txt
385 1.txt
[root@centos-01 ~]# ls
1.txt anaconda-ks.cfg
[root@centos-01 ~]# vim 2.txt
[root@centos-01 ~]# wc -m 2.txt
10 2.txt
[root@centos-01 ~]# cat -A 2.txt
abcd$
,;.?$
每行末尾的隐藏字符$
也算在字符统计中。
[root@centos-01 ~]# wc -w 2.txt
2 2.txt
去重复的行,使用uniq的前提是需要先给文件排序,否则不是相邻的两行无法去重。
[root@centos-01 ~]# vim 2.txt
[root@centos-01 ~]# cat 2.txt
abcd
,;.?
abcd
abcd
[root@centos-01 ~]# uniq 2.txt
abcd
,;.?
abcd
[root@centos-01 ~]# sort 2.txt
,;.?
abcd
abcd
abcd
[root@centos-01 ~]# sort 2.txt |uniq
,;.?
abcd
[root@centos-01 ~]# sort 2.txt |uniq -c
1 ,;.?
3 abcd
后跟文件名,类似于重定向“>”,但是比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上。
-a
:追加重定向,类似于“>>”。不加“-a”选项,是覆盖重定向,类似于“>”。[root@centos-01 ~]# ls
1.txt 2.txt anaconda-ks.cfg
[root@centos-01 ~]# sort 2.txt |uniq -c
1 ,;.?
3 abcd
[root@centos-01 ~]# sort 2.txt |uniq -c > a.txt
[root@centos-01 ~]# cat a.txt
1 ,;.?
3 abcd
[root@centos-01 ~]# sort 2.txt |uniq -c |tee a.txt
1 ,;.?
3 abcd
[root@centos-01 ~]# cat a.txt
1 ,;.?
3 abcd
[root@centos-01 ~]# sort 2.txt |uniq -c |tee -a a.txt
1 ,;.?
3 abcd
[root@centos-01 ~]# cat a.txt
1 ,;.?
3 abcd
1 ,;.?
3 abcd
替换字符,常用来处理文档中出现的特殊符号,如DOS文档中出现的^M符号。常用的选项有两个:
最常用的就是把小写变大写:tr '[a-z]' '[A-Z]'
[root@centos-01 ~]# echo "centos" |tr '[cos]' '[COS]'
CentOS
[root@centos-01 ~]# echo "sdut" |tr '[a-z]' '[A-Z]'
SDUT
替换、删除、去重复都是针对一个字符来讲的,有一定局限性。
切割文档,常用选项:
[root@centos-01 ~]# cat a.txt
1 ,;.?
3 abcd
1 ,;.?
3 abcd
[root@centos-01 ~]#
[root@centos-01 ~]#
[root@centos-01 ~]# find /etc/ -type f -name "*conf" -exec cat {} >> a.txt \;
[root@centos-01 ~]# du -sh a.txt
240K a.txt
[root@centos-01 ~]# mkdir test
[root@centos-01 ~]# mv a.txt test/
[root@centos-01 ~]# cd test/
[root@centos-01 test]# ls
a. txt
[root@centos-01 test]# split -b 10000 a.txt
[root@centos-01 test]# ls
a.txt xab xad xaf xah xaj xal xan xap xar xat xav xax
xaa xac xae xag xai xak xam xao xaq xas xau xaw xay
[root@centos-01 test]# du -sb *
243445 a.txt
10000 xaa
10000 xab
10000 xac
10000 xad
10000 xae
10000 xaf
10000 xag
10000 xah
10000 xai
10000 xaj
10000 xak
10000 xal
10000 xam
10000 xan
10000 xao
10000 xap
10000 xaq
10000 xar
10000 xas
10000 xat
10000 xau
10000 xav
10000 xaw
10000 xax
3445 xay
如果split不指定目标文件名,则会以xaa xab…这样的文件名来存取切割后的文件。
[root@centos-01 test]# rm -f x*
[root@centos-01 test]# ls
a.txt
[root@centos-01 test]# split -b 100k a.txt
[root@centos-01 test]# ls
a.txt xaa xab xac
[root@centos-01 test]# du -sh *
240K a.txt
100K xaa
100K xab
40K xac
[root@centos-01 test]# rm -f x*
[root@centos-01 test]# split -b 100k a.txt tmp.
[root@centos-01 test]# ls
a.txt tmp.aa tmp.ab tmp.ac
[root@centos-01 test]# rm -f tmp*
[root@centos-01 test]# split -l 2000 a.txt
[root@centos-01 test]# ls
a.txt xaa xab xac xad
[root@centos-01 test]# wc -l *
6085 a.txt
2000 xaa
2000 xab
2000 xac
85 xad
12170 总用量