Linux文件内容操作

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
原文地址:https://www.cnblogs.com/shengtudai/p/13507050.html