前文中为介绍过文本查看的命令,包括:cat、tac、more、less、head、tail等,相对文本查看的命令,是文本处理命令。
文本处理命令可以是查看某文本有多少行;可以是截取部分字符串;可以是将文本中的大小写互换等。下面来具体介绍一些比较常用的文本处理命令。
wc:word count——单词统计命令,能够统计文本的单词数、字符数、行数等
# wc [option] FILE
比如统计 /etc/fstab 文件的行数、单词数和字节数:
# wc /etc/fstab
如果只显示行数,可以使用 -l 选项,此选项用得最多
# wc -l /etc/fstab
如果只显示单词数,可以使用 -w选项
# wc -w /etc/fstab
如果只显示字节数,可以使用 -c 选项
# wc -c /etc/fstab-
tr:translate——将某个文件中,或某管道传输来的字符集转换为另一种字符
# tr ‘原来的字符集’ ‘转换为的字符集’
注意要两个字符集的个数必须一致,否则可能出现异常情况。
如:
# tr ‘123’‘abc’//表示将所有的123都转换为abc,转换前后的字符个数都是3个
# echo “hello world” | tr ‘a-z’‘A-Z’ // 接收管道中传来的数据,将小写字母改为大写
该命令若使用 -d 选项,表示把出现在文件中的,属于字符集合的字符删除:
如:
# echo “hello world” | tr -d ‘abcde’//将“hello world”通过管道传输,若含有字符集
//“abcde”中的字符,则将其删除
该命令不能操作文件,因为不接收参数,若要操作文件,需要使用“<”进行输入重定向:
# tr ‘a-z’‘A-Z’ /etc/fstab // 此处会报错
# tr ‘a-z’‘A-Z’ < /etc/fstab
# cat /etc/fstab
# cat < /etc/fstab // cat命令可以接收参数,但也可以用使用“<”进行输入重定向
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 //取出用户名、ID和shell
cut命令这种只取出某些字段的操作(取列),在数据库中称作投影
join:连接两个文件中的行,与cut命令相反,使用不多
# join [option] FILE1 FILE2
# join test.txt test1.txt // 连接文件test.txt和test1.txt
sort:对文本内容进行排序。该命令不会操作源文件,仅仅只是将排序后的结果显示出来
# cat /etc/fstab
# sort /etc/fstab
sort命令可以使用的选项有:
-f:排序时忽略字符大小写
-v:使用降序排序
-u:只保留一个,移除重复行
-R:实现随机排序
-n:以数值大小来排序
sort的 -t 和 -k选项和cut的-d于-f选项很类似,-t选项用来指定分隔符,-k选项用来指定要排序的段数。 例如:要取出默认shell为bash,且其用户ID号最小的用户的用户名,可输入以下命令
# grep “/bin/bash$” /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1
uniq:和sort命令很类似,常和sort一起使用,它可以使用的选项有:
-c: 统计每行重复的次数
-u:只显示没有重复的行
-d:只显示出现了一次以上的行
转载于:https://blog.51cto.com/wuyelan/1407459