排序去重的操作
sort默认是按照字典序进行排列,之后输出排序后的数据到终端。具体的控制参考man手册。
直接进行sort filename
即可,如果需要特殊设置,添加标记即可,比如-d参数可以设置只进行字母数字的比较,忽略其他的特殊字符,或者-f忽略大小写比较,-t跟的是分隔符号,-k确定比较的字段。
比如一个例子是:
sort -t: -k3 filename
sort
添加-u参数,只对键值有效,仅仅保留一个键值,其他的全部都丢弃,可以作为一个去重的手段。
Unix中,另去重一个工具是uniq
,这通常和sort
函数联合使用。注意,uniq
是去重处理临近的行,注意3个参数:
-c
:在输出行前面加上每行在文件中出现的次数-d
:仅显示重复行-u
:仅显示不重复行
统计文本行数、字数和字符数
wc
命令是核心部分。比如
wc 1.txt
输出
18 24 100
表示1.txt文件有18行、24个单词和100个字符
3个重要的参数,分别是:
-c
显示字符的个数-w
显示单词的个数-l
显示文件文本行的行数
一般可以和管道进行连接,用于各个数据的统计。
打印和格式化输出数据
pr
、fmt
和fold
是三个常用的命令。
pr [option] [file]
比如-c
参数规定输出的列数。
fmt
格式化文本段落,使得文本不要超出可见屏幕的范围。
fold
限制文本宽度。
补充, 使用head
可以提取文本的开头,使用tail
提取文本的结尾。
提取、拼接和替换字段
cut
和join
是操作的核心部分。
cut
用于在规范格式的文本中提取出需要的字段。
cut [option] [file]
join
命令可以把linux不同文件中,具有相同的key值的记录信息连接到一起。它根据指定的栏位,把不同的列拼接到一起。
join [options] FILE1 FILE2
tr
命令用于从标准输入删除或者替换字符,之后把结果写入标准输出。一般用于小范围的文本替换。一般的格式为:
tr [options] SET1 [SET2]
比如,把所有的小写转换成大写:
tr 'a-z' 'A-Z' < linux.wiki > linux.wiki.upper