处理数据文件(一)

2020-05-29  本文已影响0人  Peng_001

sort

sort 命令会按照会话指定的默认语言的排序规则对文本文件中的数据进行排序。

mugpengdembp:test mugpeng$ cat f
123
12
429
832
9
93
83
2323
mugpengdembp:test mugpeng$ sort f
12
123
2323
429
83
832
9
93

不难发现,sort 命令并不是按照数字大小进行了排序,而是把数字当做字符来执行标准的字符排序。因此我们可以增加-n选项,告诉sort 命令把数字识别为数字并按值正序排列。

$ sort -n a.txt 
9
12
83
93
123
429
832
2323

其他的选项还有-M 可以识别三字符的月份名。

除此之外-k 指定所按照的排序的字段名,以及-t 指定一个用来区分键位置的字符。二者也非常有用。-r则可以使结果逆序排列,可以和-n搭配使用。

$ sort -t ':' -k 3 -n /etc/passwd

输入以上代码,就可以按照以: 为分割,按3字段的内容进行数值排序了。

root:*:0:0:System Administrator:/var/root:/bin/sh
daemon:*:1:1:System Services:/var/root:/usr/bin/false
_uucp:*:4:4:Unix to Unix Copy Protocol:/var/spool/uucp:/usr/sbin/uucico
_taskgated:*:13:13:Task Gate Daemon:/var/empty:/usr/bin/false
_networkd:*:24:24:Network Services:/var/networkd:/usr/bin/false

grep

grep 命令非常方便帮助我们从指定的文件中查找包含匹配指定模式的字符的行,其输出结果就是包含了匹配模式的行的信息。

grep a file1 表示搜寻file1 文件中包含 a 的文本,并返回该行的内容。

grep 常用的选项包括

-v # 反向搜索,输出不匹配的行
-n # 显示匹配行所在的行号
-c # 显示有多少行包含匹配信息
-e # 指定多个匹配模式

例子

$ grep -vn 1 a.txt 
3:429
4:832
5:9
6:93
7:83
8:2323

grep 是非常强大的正则表达式工具。其他版本还有egrep 允许POSIX 拓展正则表达式,以及fgrep

上一篇下一篇

猜你喜欢

热点阅读