美文网首页
AWK常用功能个人整理

AWK常用功能个人整理

作者: AsdilFibrizo | 来源:发表于2019-06-25 11:46 被阅读0次

awk 功能比sed更加强大,但表达式会相对复杂一些

输入文本 test.txt:
ID        type         old  new
A01_1   1_34189552   0|0  0|0
A01_2   1_65117762   1|0  1|0
A01_3   1_70543349   0|0  0|0

首先说明几个比较重要的内置参数

NF  #列数
awk '{print $0, NF}' test.txt #每一行都是4列
ID        type         old  new 4
A01_1   1_34189552   0|0  0|0 4
A01_2   1_65117762   1|0  1|0 4
A01_3   1_70543349   0|0  0|0 4
$NF  #尾列
awk '{print $NF}' test.txt
new
0|0
1|0
0|0
NR  #行号
awk '{print "行号:"NR, $0}' test.txt
行号:1 ID        type         old  new
行号:2 A01_1   1_34189552   0|0  0|0
行号:3 A01_2   1_65117762   1|0  1|0
行号:4 A01_3   1_70543349   0|0  0|0
FNR # 若有两个文件,NR会递增,FNR在新文件下会从1开始
FS #输入分隔符
OFS #输出分隔符
awk 'BEGIN{FS="_";OFS="---"}{print $1,$2}' test.txt
ID        type         old  new---
A01---1   1
A01---2   1
A01---3   1
RS #输入行分隔符
ORS #输出行分隔符
  • 1.输出特定行
awk '{print $1,$3}' test.txt 以\t为输出分隔符输出第一列和第三列
ID old
A01_1 0|0
A01_2 1|0
A01_3 0|0

指定分隔符 -F

awk -F_ '{print $1}' test.txt # 以_作为输入数据分割
ID        type         old  new
A01
A01
A01
awk -F'[_\|]' '{print $1,$2,$3,$4}' test.txt #多个分隔符以'[分隔符1分隔符2]'
ID        type         old  new
A01 1   1 34189552   0 0  0
A01 2   1 65117762   1 0  1
A01 3   1 70543349   0 0  0

设置变量 -v

awk -F_ -va=2 '{print $1,$2+a}' test.txt # 数字相加
ID        type         old  new 2
A01 3
A01 4
A01 5
awk -F_ -va=2 '{print $1,a$2}' test.txt # 字符拼接
ID        type         old  new 2
A01 21   1
A01 22   1
A01 23   1

外部文件 -f

script.awk
{print $1}
{print $2}
awk -f script.awk test.txt
ID
type
A01_1
1_34189552
A01_2
1_65117762
A01_3
1_70543349
A01_4
1_77765794
A01_5
1_109674087
A01_6
1_194530914
A01_7
1_224812701
A01_8
2_3645429
A01_9
2_21527764
A01_10
2_28792335
A01_11
2_142074734

判断语句 if ||为或 &&为与

awk '{if($1=="ID"||$2=="1_65117762")print $1,$2}' test.txt #多个条件使用||
ID type
A01_2 1_65117762

格式化输出printf

awk '{printf("%-8s %-12s %-4s\n", $1,$2,$3)}' test.txt 
# %-8s 8个字符宽度的字段中左对齐输出
#若要输出浮点数%6.2f 以6个字符长度小数点长度2
ID       type         old
A01_1    1_34189552   0|0
A01_2    1_65117762   1|0
A01_3    1_70543349   0|0

过滤某行

awk '{$1=""; $2="";print $0}' test.txt # 不输出$1,$2
  old new
  0|0 0|0
  1|0 1|0
  0|0 0|0

相关文章

  • AWK常用功能个人整理

    awk 功能比sed更加强大,但表达式会相对复杂一些 首先说明几个比较重要的内置参数 1.输出特定行 指定分隔符 ...

  • Sed常用功能个人整理

    Sed对1G以下的数据效率很高这里介绍一些个人在工作中遇到的sed问题 1.查找字段 以文章test.txt为例:...

  • awk的使用方法

    awk 用法: 常用格式: awk [options 参数] 'commands' ...

  • awk

    Linux System Environment awk功能 awk格式 awk 参数 一、awk截取列 二、显示...

  • Linux

    linux awk命令详解、linux awk命令Linux常用操作指令Linux netstat命令详解 awk...

  • Shell大杂烩

    AWK 常用语法:awk -F 'separator' '{pattern + action}' filenam...

  • Linux常用命令总结

    Linux常用命令指南 @Date 2017.05.23 tail awk awk ' pattern {acti...

  • 日志分析

    命令grep、awk、sort、uniq常用示例

  • Linux 命令之awk

    awk使用教程: awk调用方式,常用三种 1.命令行调用(重点介绍) 常用格式框架: 说明:-F 指定分割符,...

  • 文字报表工具awk的使用

    将awk中常用的通用语法整理成思维导图,供平时参考查看。 在线思维导图地址:https://www.process...

网友评论

      本文标题:AWK常用功能个人整理

      本文链接:https://www.haomeiwen.com/subject/saktcctx.html