【Linux】文本处理、关键字截取

cut

cut命令可以将一行文字按照指定字符切分成多段并取出某一段,或者直接指定要取出的字符位置。
格式:

cut -d  '指定字符'  -f数字   //切分并取出指定列
cut -c 区间    //取出指定字符位置的字符串,区间用-表示,如2-4,8-,-9等

实例:
1 从登录信息中取出登录名那一列。

[root@localhost nta]# last | cut -d ' ' -f1
root
root
root
root
。。。。。。

2 取出$PATH中的第8个字符后面的内容。

[root@localhost nta]# echo $PATH | cut -c 8-
b64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

grep

grep命令用于从文档中找出我们需要的那一行来。
格式:

grep -acinv ‘搜索字符串’ filename

参数:

-a :将 binary 档案以 text 档案的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!

实例:
1 找出last中,有root的那些行。

[root@localhost nta]# last | grep root
root     pts/0        172.16.150.189   Thu Aug 31 14:01   still logged in   
root     pts/2        172.16.150.199   Thu Aug 31 10:07   still logged in   
root     pts/5        172.16.150.184   Thu Aug 31 09:32 - 09:40  (00:08)    
root     pts/4        172.16.150.184   Thu Aug 31 09:32 - 09:35  (00:02)    
。。。。。。

2 找出last中没有root的那些行,并输出行号。

wtmp begins Tue Jun  6 12:26:58 2017
[root@localhost nta]# last | grep -vn  root
32:(unknown :0           :0               Wed Aug 30 15:31   still logged in   
33:(unknown :0           :0               Wed Aug 30 15:26 - 15:31  (00:04)    
55:(unknown :0           :0               Wed Aug 30 12:42 - 12:43  (00:00)    
56:reboot   system boot  3.10.0-327.el7.x Wed Aug 30 12:42 - 14:13 (1+01:31)     
。。。。。。 

sort

sort命令是将文字的每一行按照指定规则排序。

格式:

sort [-fbMnrtuk] filename

参数:

-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用『纯数字』进行排序(预设是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,预设是 tab 键;
-k :以那个区间 (field) 来进行排序的意思,

实例:
1 将用户账号信息(/etc/passwd)进行排序(可以看到默认是以第一个字母按照字母表顺序排序的)。

[root@localhost nta]# cat /etc/passwd | sort
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:987:984::/var/lib/chrony:/sbin/nologin
colord:x:992:990:User for colord:/var/lib/colord:/sbin/nologin
。。。。

2 将用户账号信息按照用户标识(第三列,数字)进行排序。

[root@localhost nta]# cat /etc/passwd | sort -t ':' -k 3 -n
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
sync:x:5:0:sync:/sbin:/bin/sync
。。。。。。

uniq
uniq显示输入的内容,但每个重复的行只显示一次。

格式:

uniq [-ic]

参数:

-i :忽略大小写字符的不同;
-c :进行计数

实例:

[root@localhost nta]# last | grep root | cut -d ' ' -f1 | uniq
    root

[root@localhost nta]# last | grep root | cut -d ' ' -f1 | uniq -c
    475 root

wc
wc命令用于检索文档的字数、行数和字符数。

格式:

wc [-lwm]

参数:

-l :仅列出行;
-w :仅列出多少字(英文单词);
-m :多少字符;

实例:
检查$PATH中有多少字符。

[root@localhost nta]# echo $PATH | wc -m
82

你可能感兴趣的:(Linux)