前文中为介绍过文本查看的命令,包括:cattacmorelessheadtail等,相对文本查看的命令,是文本处理命令。

文本处理命令可以是查看某文本有多少行;可以是截取部分字符串;可以是将文本中的大小写互换等。下面来具体介绍一些比较常用的文本处理命令。

wcword count——单词统计命令,能够统计文本的单词数、字符数、行数等

# wc [option] FILE

比如统计 /etc/fstab 文件的行数、单词数和字节数:

# wc /etc/fstab

如果只显示行数,可以使用 -l 选项,此选项用得最多

# wc -l /etc/fstab

如果只显示单词数,可以使用 -w选项

# wc -w /etc/fstab

如果只显示字节数,可以使用 -c 选项

# wc -c /etc/fstab-


wKioL1NpTCXAAKuYAADKPWig9DA356.jpg


trtranslate—将某个文件中,或某管道传输来的字符集转换为另一种字符

# tr ‘原来的字符集’ ‘转换为的字符集’

注意要两个字符集的个数必须一致,否则可能出现异常情况。

如:

# tr 123abc//表示将所有的123都转换为abc,转换前后的字符个数都是3

# echo hello world | tr a-zA-Z // 接收管道中传来的数据,将小写字母改为大写

该命令若使用 -d 选项,表示把出现在文件中的,属于字符集合的字符删除:

如:

# echo hello world | tr -d abcde//将“hello world”通过管道传输,若含有字符集

      //abcde”中的字符,则将其删除

该命令不能操作文件,因为不接收参数,若要操作文件,需要使用“<”进行输入重定向:

# tr a-zA-Z /etc/fstab           // 此处会报错

# tr a-zA-Z < /etc/fstab

# cat /etc/fstab        

# cat < /etc/fstab      // cat命令可以接收参数,但也可以用使用“<”进行输入重定向


wKiom1NpTGqjD7T3AAVDGwamF38652.jpg


cut: 文本切割命令,最常用的功能是能够以指定的符号作为行中内容的分隔符,将每一行切片,而只取出某些片。

# cut [option] FILE

它有以下选项可以使用:

-d 指定分隔符,默认的分隔符为 -d——空白字符,若使用其他字符,可以不加引号,如 -d: 表示以冒号为分隔符。

-f 指定需要显示的切片,如 -f1,5表示选第一片和第五片, -f1-5表示选第一片到第五片。-f选项与参数间没有空格!

# cut -d: -f1 /etc/passwd    //取出用户名

# cut -d: -f1,3,7 /etc/passwd   //取出用户名、IDshell

wKioL1NpTFiiCVLbAAJCYi6hlSI967.jpg

cut命令这种只取出某些字段的操作(取列),在数据库中称作投影

join:连接两个文件中的行,与cut命令相反,使用不多

# join [option] FILE1 FILE2


# join test.txt test1.txt   // 连接文件test.txttest1.txt

wKiom1NpTJPS767mAAC38QhNqrg834.jpg


sort:对文本内容进行排序。该命令不会操作源文件,仅仅只是将排序后的结果显示出来

# cat /etc/fstab

# sort /etc/fstab

wKioL1Ns5YzT6rI_AAIctk5w8po328.jpg

sort命令可以使用的选项有:

-f:排序时忽略字符大小写

-v:使用降序排序

-u:只保留一个,移除重复行

wKiom1Ns5diz7qYkAAE_xgYKap8659.jpg

-R:实现随机排序

-n:以数值大小来排序

wKioL1Ns5cSz0dfXAAFUmHFaK1k942.jpg


sort-t -k选项和cut-d-f选项很类似,-t选项用来指定分隔符,-k选项用来指定要排序的段数。 例如:要取出默认shellbash,且其用户ID号最小的用户的用户名,可输入以下命令

# grep /bin/bash$ /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1

wKioL1Ns5e3wleNuAAT1h0V7H6I107.jpg


uniq:和sort命令很类似,常和sort一起使用,它可以使用的选项有:

-c: 统计每行重复的次数

-u:只显示没有重复的行

-d:只显示出现了一次以上的行

wKiom1Ns5k-CQemTAAJ9sGGE-n0727.jpg