基于https://www.cnblogs.com/wangyuebo/p/5836933.html的详细补充讲解
[root@localhost awk]# seq 10|xargs -n 2 > file
[root@localhost awk]# seq 10  -1 1|xargs -n 2 > file1
 
xrags -n 2【表示每次批处理的数量为2个,默认的间隔为“ ”】
seq 10 -1 1【表示生成10个数字,逆序输出,步长为1】
 
 
[root@localhost awk]# cat file1 
2 3 
4 5
6 7 
8 9 
1 0
 
[root@localhost awk]# cat file |awk '{print $1}'
1
3
5
7
9
[root@localhost awk]# awk '{print NR}' file file1
1
2
3
4
5
6
7
8
9
10
[root@localhost awk]# awk '{print NR,FNR}' file file1
1 1
2 2
3 3
4 4
5 5
6 1
7 2
8 3
9 4
10 5
[root@localhost awk]#
 
[root@localhost awk]# awk 'NR==FNR{a[NR]=$1}NR!=FNR{print a[FNR],$2}' file file1
1 93 75 57 39 1
[root@localhost awk]#
awk的详解:
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
awk处理过程: 依次对每一行进行处理,然后输出
特殊要点:
$0           表示整个当前行
$1           每行第一个字段
NF          字段数量变量
NR          每行的记录号,多文件记录递增
FNR        与NR类似,不过多文件记录不递增,每个文件都从1开始
\t            制表符
\n           换行符
FS          BEGIN时定义分隔符
RS       输入的记录分隔符, 默认为换行符(即文本是按一行一行输入)
~            匹配,与==相比不是精确比较
!~           不匹配,不精确比较
==         等于,必须全部相等,精确比较
!=           不等于,精确比较
&&      逻辑与
||             逻辑或
+            匹配时表示1个或1个以上
/[0-9][0-9]+/   两个或两个以上数字
/[0-9][0-9]*/    一个或一个以上数字
FILENAME 文件名
OFS      输出字段分隔符, 默认也是空格,可以改为制表符等
ORS        输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕
-F'[:#/]'   定义三个分隔符
 
[root@localhost awk]# paste file3 file4
1    9
3    7
5    5
7    3
9    1
[root@localhost awk]# paste file3 file4|tr "\t" " "
1 9
3 7
5 5
7 3
9 1
paste 指令会把每个文件以列对列的方式,一列列地加以合并。
-d<间隔字符>或--delimiters=<间隔字符>  用指定的间隔字符取代跳格字符。
-s或--serial  串列进行而非平行处理。
 
 
 
posted on 2019-10-05 09:57  topass123  阅读(418)  评论(0编辑  收藏  举报