1.文件生成
seq:产生一系列的数字;man seq 查看其具体使用 。这里使用seq产生下游分析所用到的输入文件
产生从1到10的数,步长为1
kugua@kugua-UX310UQK:~$ seq 1 10 1 2 3 4 5 6 7 8 9 10
kugua@kugua-UX310UQK:~$ seq -s ' ' 1 10 1 2 3 4 5 6 7 8 9 10
#以一行来显示,空格作为分割符号
kugua@kugua-UX310UQK:~$ seq -s ' ' 1 2 10 1 3 5 7 9 #seq后有三个数,第一个数为起始,第二个数为步长,第三个数为终止
kugua@kugua-UX310UQK:~$ cat <(seq 1 10) <(seq 11 5 30) >test kugua@kugua-UX310UQK:~$ cat test 1 2 3 4 5 6 7 8 9 10 11 16 21 26
2.文件排序
sort排序,默认按字符编码排序。如果想按数字大小排序,需添加-n参数。sort常用参数
-n | 数值排序 |
-h | 人类刻度的数值排序 (2K 1G等) |
-r | reverse 逆序 |
-c | check,不排序,查看文件是否已排序好 |
-k | 指定使用哪列或哪几列排序 |
-m | 合并已经排序好的文件 |
-S | 缓冲区大小,用于排序大文件时的分割排序中每次分割的文件大小 |
-u | 重复行只保留一行 |
kugua@kugua-UX310UQK:~$ sort test 1 10 11 16 2 21 26 3 4 5 6 7 8 9 #sort排序,按ASCII码排序
kugua@kugua-UX310UQK:~$ sort -n test 1 2 3 4 5 6 7 8 9 10 11 16 21 26 #sort -n 按数值大小排序
sort -nr test 26 21 16 11 10 9 8 7 6 5 4 3 2 1 #sort -r 逆序
kugua@kugua-UX310UQK:~$ cat <(seq 1 9) >>test kugua@kugua-UX310UQK:~$ wc -l test 23 test #第一次生成文件用> ,追加文件内容用>>
awk是一个强大的文本处理工具,其处理数据模式为按行处理,每次读入一行,进行操作
OFS :输出文件的列分割符(output file column seperator)
FS : 输入文件的列分割符(默认为空白字符)
awk中的列从第一到n列,分别记录为$1 $2 ……$n
BEGIN 表示在文件读取前先设置基本参数;与之对应的是END,只文件读取完成之后进行操作
不以BEGIN,END开头的{ }就是文件读取,处理的部分。每次对一行进行处理。后面在详细学
sort test | uniq -c | awk 'BEGIN{OFS=" "}{print $2,$1}' a 4 b 2 c 2 d 2
对两列文件,按照第二列进行排序,sort -k2,2n 。
kugua@kugua-UX310UQK:~/dhg$ sort test | uniq -c | awk 'BEGIN{OFS=" "}{print $2,$1}' | sort -k2,2r a 4 b 2 c 2 d 2