一、sort 命令
#排序,默认是以空白字符为分隔符,以字母或者数字的顺序进行排序
选项:
-t #指定分隔符
-k #指定以第几列进行排序,后面跟数字
-n #以数值大小进行排序
-r #倒叙排序
格式: sort 文件名
sort -t “:” -nrk3 passwd # k和3不能分开
[root@lixian ~]# sort -t ":" -k3 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
如果想让数字大小排序就要加 -n : sort -t “:” -nk3 passwd
倒叙是-r: 注意:k和3不能分离
[root@lixian ~]# sort -t ":" -rk3 passwd adm:x:3:4:adm:/var/adm:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin root:x:0:0:root:/root:/bin/bash
将重复的行排列在一起:默认是首字母大小排序
[root@lixian ~]# sort test.txt aaa/5654 abc/23 abc/34 abc/678 cbd/45 cbd/456 dwd/35
二、uniq 命令
#去重(必须是相邻的相同的行)
还可以进行统计行的次数
-c #统计重复行的次数
-u #只显示不重复
-d #只显示重复的
大部分需要搭配sort命令使用uniq
统计出现重复的行,然后再使用sort -rn 倒叙查看次数最多的一行
[root@lixian ~]# sort test.txt aaa/5654 abc/23 abc/23 abc/23 cbd/45 cbd/45 dwd/35 [root@lixian ~]# sort test.txt |uniq -c 1 aaa/5654 3 abc/23 2 cbd/45 1 dwd/35 [root@lixian ~]# sort test.txt |uniq -c | sort -nr 3 abc/23 2 cbd/45 1 dwd/35 1 aaa/5654
三、cut 命令
#取列,截取字段
选项:
-d #指定分隔符,默认是以tab键为分隔符
-f #取出指定的列,多个用逗号分隔或者- 连续多列
-c #截取指定的字符,多个用逗号分隔或者- 连续多列
以 “ / ” 为分隔符 取第一列
[root@lixian ~]# cut -d "/" -f1 test.txt abc cbd abc aaa abc cbd dwd [root@lixian ~]#
cut可以和cort、uniq搭配使用,查找某一列的重复的次数,然后次数最多的放在第一列。
[root@lixian ~]# cut -d "/" -f1 test.txt |sort aaa abc abc abc cbd cbd dwd [root@lixian ~]# cut -d "/" -f1 test.txt |sort |uniq -c 1 aaa 3 abc 2 cbd 1 dwd [root@lixian ~]# cut -d "/" -f1 test.txt |sort |uniq -c|sort -rn 3 abc 2 cbd 1 dwd 1 aaa
cut也可以取字符—–第几列和第几列用 逗号隔开,连续的用 – 分隔
[root@lixian ~]# cat test.txt abc/23 cbd/45 abc/23 aaa/5654 abc/23 cbd/45 dwd/35 [root@lixian ~]# cut -c 3,5 test.txt c2 d4 c2 a5 c2 d4 d3 [root@lixian ~]# cut -c 3-5 test.txt c/2 d/4 c/2 a/5 c/2 d/4 d/3
四、tr 命令
#替换、删除字符的命令,(只能单对单的替换,删除)
替换某一列字符 tr ” ” ” ” ,一般需要先取行
单独使用tr 必须用 < 输入文件
[root@lixian ~]# cat test.txt abc/23 cbd/45 abc/23 aaa/5654 abc/23 cbd/45 dwd/35 [root@lixian ~]# cat test.txt |tr "/" "0" abc023 cbd045 abc023 aaa05654 abc023 cbd045 dwd035
tr -d 删除单个字符 但必须用 < 输入文件
[root@lixian ~]# tr -d "/" <test.txt abc23 cbd45 abc23 aaa5654 abc23 cbd45 dwd35
5、wc 命令
#统计 字节大小,行数,列数 字符的长度
选项:
-l #统计行数
-c #统计总字节大小
-w #统计总列数,默认以空白字符为分隔符
-L #统计最长的一行内容的长度
<输入重定向 指定输入设备
[root@lixian ~]# ls -l total 4 -rw-r–r–. 1 root root 51 Dec 4 13:37 test.txt [root@lixian ~]# wc -l <test.txt 7 [root@lixian ~]# wc -w <test.txt 7 [root@lixian ~]# wc -c <test.txt 51 [root@lixian ~]# wc -L <test.txt 8
扩展 变量:
指定一个变量名称 a 的值 = 99
$a 就是一个变量
echo $a 输出这个变量 就是输出这个变量定义的值 也就是99
六、sed 增删改查命令
#三剑客第二 擅长取行 、增删改查
选项:
-n #取消默认输出
-i #真正的替换
-r #支持扩展正则
+:至少一次
?:0次或者1次
{m,n}:至少m次,最多n次
():分组 \1\2\3…..
| :或者
内部命令:
p #打印
d #删除
s #替换
g #全局
a #追加
i #插入
; #多条命令的分隔
, #表示连续的命令
查:
p #打印
查行 多少行到多少行 用法 sed -n ‘行数p’ 文件名
[root@lixian ~]# sed -n '4,5p' test.txt aaa/5654 abc/23
查字符串 grep会的sed都会,grep不会的sed也会
也支持正则表达式
比如 /^abc/以什么开头 /3$/以什么什么结尾 | 是或者的意思(扩展正则)
多个字符串过滤行用;分号表示 过滤行到行的用,’/abc/,/edf/p’
[root@lixian ~]#sed -n '/abc/p' test.txt abc/23 abc/23 abc/23
删:
删除行
[root@lixian ~]# sed '4,6d' test.txt abc/23 cbd/45 abc/23 dwd/35
单个字符串所在的行删除
[root@lixian ~]# sed '/abc/d' test.txt cbd/45 aaa/5654 cbd/45 dwd/35
多个字符串删除
[root@lixian ~]# sed '/abc/d;/dwd/d' test.txt cbd/45 aaa/5654 cbd/45
增:
在文件里面插入一行内容
a #追加
i #插入
行数加上a是在行数的后面追加一行
行数加上 i是在行数的前面插入一行
$a是在最后一行后面追加 $i是在最后一行前面插入
在文件里面插入一行内容
a #追加
i #插入
行数加上a是在行数的后面追加一行
行数加上 i是在行数的前面插入一行
$a是在最后一行后面追加 $i是在最后一行前面插入
[root@lixian ~]# sed '2adwad/////' test.txt abc/23 cbd/45 dwad///// [root@lixian ~]# sed '2idwad000000' test.txt abc/23 dwad000000 cbd/45
改:
替换内容
-i 生效
s #替换
g #全局
格式: sed ‘s#旧的#新的#gp’ 文件名
全局替换:
[root@lixian ~]# sed 's#abc#99999#g' test.txt 99999/23 cbd/45 99999/23
局部替换:
[root@lixian ~]# sed 's#abc#999#' 123.txt 999,abc,abc 999,abc,abc cde,cde,,999,edc cde,cde,,999,edc aaa.999.aw.abc
针队行的替换:
[root@lixian ~]# sed '3s#abc#999#g' 123.txt abc,abc,abc cde,cde,,abc,edc aaa.999.aw.999
针对多行的替换:
[root@lixian ~]# sed ‘2,4s#abc#888#g’ 123.txt
abc,abc,abc
cde,cde,,888,edc
aaa.888.aw.888
也支持 $最后一行、^以什么什么开头、$以什么什么结尾
[root@lixian ~]# sed '/^a/s#abc#888#g' 123.txt 888,888,888 cde,cde,,abc,edc aaa.888.aw.888 [root@lixian ~]#