shell脚本-sed工具、sort排序、uniq统计及split文件分割

sed工具行定位使用


sed -n '2'p file-只打印第二行,不打印其它的行

示例:

[root@bogon mnt]# nl file.txt 
 1 aaaaaaaaaaa
 2 bbbbbbbbbbb
 3 ccccccccccc
 4 ddddddddddd
 5 eeeeeeeeeee
 6 fffffffffff
 7 ggggggggggg
 8 hhhhhhhhhhh
[root@bogon mnt]# sed -n '2'p file.txt 
bbbbbbbbbbb

sed -n '1,3'p file-从第一行到第三行的记录

示例:

[root@bogon mnt]# sed -n '1,3'p file.txt 
aaaaaaaaaaa
bbbbbbbbbbb
ccccccccccc

sed -n '/a/'p file-打印匹配a的行

示例:

[root@bogon mnt]# sed -n '/a/'p file.txt 
aaaaaaaaaaa

sed -n '/g/,$'p file-打印匹配从g到最后的所有行

示例:

[root@bogon mnt]# sed -n '/g/,$'p file.txt 
ggggggggggg
hhhhhhhhhhh

sed '1,2'd file-把第一行和第二行全部删除

示例:

[root@bogon mnt]# sed -n '1,2'd file.txt
此操作不会删除原始文件的内容

sed与awk的结合

示例:

[root@bogon mnt]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 20439296 866716 18534296 5% /
tmpfs 953276 0 953276 0% /dev/shm
/dev/sda1 198337 28877 159220 16% /boot
/dev/sr0 4363088 4363088 0 100% /media
[root@bogon mnt]# df |sed -n '3'p|awk '{print $5}'
0%
[root@bogon mnt]# df |sed -n '3'p|awk '{print int($5)}'
0

uniq行定位的使用


uniq -c file-打印紧挨重复行出现的次数

示例:

[root@bogon mnt]# uniq -c log.txt 
 5 192.168.100.1
 4 192.168.100.2
 1 192.168.100.3
 6 192.168.100.4

uniq -d file-只打印重复的行

示例:

[root@bogon mnt]# uniq -d log.txt 
192.168.100.1
192.168.100.2
192.168.100.4

awk '{print $1}' /var/log/httpd/access_log|sort|uniq -c

把apache网站的所有访问ip全部统计出来,并打印出统计次数

示例:

[root@bogon httpd]# cat access_log |awk '{print $1}'|sort|uniq -c
 105 192.168.85.1
[root@bogon httpd]# cat access_log |awk '{print $1}'|sort|uniq -c
 125 192.168.85.1

sort行定位的使用


sort file-把文件按字母的升序进行排序

示例:

[root@bogon mnt]# sort file.txt 
aaaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaaaaa
bbbbbbbbbbb
ccccccccccc
ddddddddddd
ddddddddddd
eeeeeeeeeee
fffffffffff
ggggggggggg
hhhhhhhhhhh
vvvvvvvvvvvv

sort -r file-把文件按字母的降序进行排序

示例:

[root@bogon mnt]# sort -r file.txt 
vvvvvvvvvvvv
hhhhhhhhhhh
ggggggggggg
fffffffffff
eeeeeeeeeee
ddddddddddd
ddddddddddd
ccccccccccc
bbbbbbbbbbb
aaaaaaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaa

cat file|sort -t: -k1 -r 为:进行分割后的第一列来倒序排序

示例:

[root@bogon mnt]# cat file1.txt |sort -t: -k1 -r
e b c d e 5
d b c d e 4
c b c d e 3
b b c d e 2
a b c d e 1

split行定位的使用


split -3 log log

生成logab,logac.....logai等多个文件

把log文件每三行分割成一个文件,每个文件的前缀都是以log开头的

示例:

[root@bogon mnt]# split -3 log log 
[root@bogon mnt]# ls
file1.txt log logab logad logaf 
file.txt logaa logac logae test.sh
[root@bogon mnt]# nl logaa
 1 192.168.100.1
 2 192.168.100.1
 3 192.168.100.1
[root@bogon mnt]# nl logab
 1 192.168.100.1
 2 192.168.100.1
 3 192.168.100.2
[root@bogon mnt]# nl logac
 1 192.168.100.2
 2 192.168.100.2
 3 192.168.100.2
[root@bogon mnt]# nl logad
 1 192.168.100.3
 2 192.168.100.4
 3 192.168.100.4
[root@bogon mnt]# nl logae
 1 192.168.100.4
 2 192.168.100.4
 3 192.168.100.4
[root@bogon mnt]# nl logaf
 1 192.168.100.4
 2 192.168.100.1
 3 192.168.100.4

你可能感兴趣的:(shell,linux)