awk,seq,xarg实例使用
Posted topass123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk,seq,xarg实例使用相关的知识,希望对你有一定的参考价值。
[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==FNRa[NR]=$1NR!=FNRprint 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 串列进行而非平行处理。
以上是关于awk,seq,xarg实例使用的主要内容,如果未能解决你的问题,请参考以下文章
使用 xargs 和 awk 处理多个文件并将处理后的数据写入单独的文件
linux--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)