首页 > 代码库 > 文本处理命令——统计、切割
文本处理命令——统计、切割
wc:
wc [option] ... [file]...
-l:只显示行数
-w:只显示字数
-c:只显示字符数
用处:有的时候我们可以用来统计一个文件里的内容,或者统计输出内容的字数等
例如:
1.显示/etc/passwd中的总行数
~]$ wc -l /etc/passwd 52 /etc/passwd
2.通过管道线显示/etc/passwd中的总行数
~]$ cat /etc/passwd | wc -l 52
3.直接输出字数统计
~]$ echo "ab cd ef" | wc -w 3
cut:remove sections from each line of files
-d:指定用来修剪文档的分割字符,默认是空字符
-f:根据定义的分隔符来指定字段编号
地址定界使用法:
#:选择被指定的单个字符;
#,#:离散的多个被指定的单个字符;
#-#:连续的多个被指定的字段;
--output-delimiter-string:指定输出分隔符;
用处:有的时候需要分割字符,得到一些由特殊的字或者字符分开的单独的字符串
例如:(d来分割字符串,f选取分割出来的第几个字符串)
~]$ echo "a+b+5+9" | cut -d "+" -f 1-3 a+b+5
~]$ echo "a+b+5+9" | cut -d "+" -f 1 a
~]$ echo "a+b+5+9" | cut -d "+" -f 1,4
awk:
awk -F “DELIMITER” ‘[/PATTERN/]{print $1,$2...$NF}‘
$1,$2...$NF:根据字段分隔符切割出来的文本片段都存放在相应的内部
变量中;
-F:指定分隔符;默认为空白字符
awk -F ‘/‘ ‘{print $NF}‘ files(以/为分隔符)
用处:这个方法要比cut命令更加优秀,能够直接取出想要的内容
例如:
~]$ echo "a+b+5+9" | awk -F "+" ‘{print $1,$2,$3}‘ a b 5
sort:sort - sort lines of text files将文本文件按行排序;,默认排序规则是按ASCLL表中的字符顺序进行的,这个排序标准可修改;
-R:把文件随机排序;这种随机算法非常简陋,不适于复杂环境;
-r:逆序排序;按ascll码逆序排序
-u:去重,重复出现的行只保留一行;连续且完全相同的行叫重复;
-n:以数字的数值大小进行排序;
-t:指定字段分隔符;
-k:指明根据哪个字段进行排序,一般和-t同时使用;
-f:忽略大小写区别;
sort -t : -k 3 /etc/passwd(根据:为分隔符的第三个字段进行排序)
用处:对文本进行排序等操作
举例:
1.对/etc/passwd的前五行按照首字母进行排序输出
~]$ head -5 /etc/passwd | sort 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 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin root:x:0:0:root:/root:/bin/bash
2.对/etc/passwd的前五行的每行用“:”进行分开,然后按照第三个字段的首字母进行排序
~]$ head -5 /etc/passwd | sort -t : -k 3 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
uniq:
-d,--repeated:只显示重复出现的行,而且每一组重复的行只显示一行;
-u,--unique:只显示不重复的行;
-c,--count:在显示的行前面加一个次数,即重复出现的次数;
用处:超找重复的行
举例:
创建一个文本包含以下内容:
~]$ cat uniq asd zxc qwe zxc zxc
然后对这个文本使用uniq命令,会把重复的行只显示一行(注意:不挨着的重复行不算重复行,如第二行和第四行)
~]$ uniq uniq asd zxc qwe zxc
使用-d命令只显示重复的行,就是源文件中的第四行和第五行,但是只显示一次:
~]$ uniq -d uniq zxc
使用-c命令显示重复的次数
~]$ uniq -c uniq 1 asd 1 zxc 1 qwe 2 zxc
diff:compare files line by line,比较两个文件的不同
用处:比较文件之间的不同
举例:
创建两个文件:
]$ cat file1 sd asd qwe zxc
]$ cat file2 sd asd qwe a zxc asd
然后使用diff命令判断两个文件的不同之处
]$ diff file1 file2 3a4 > a 4a6 > asd
可以看出file1文件和file2文件的不同之处在第三行多了个a,第四行多了个asd
这个命令可以用来保存版本,比如说当你在一个文件中写入了一些内容,但是不知道写入了哪些,就可以使用这个命令查看。在日常软件开发中也可以使用这个命令和patch命令组合使用,实现文本或软件的升级或降级。
文本处理命令——统计、切割