awk命令

本文介绍了awk,一种在Linux/Unix系统中用于文本分析的强大工具,包括其基本用法、选项参数、输出特定列与列组合、计算、查询、内置变量使用、条件判断以及数组遍历等内容。
摘要由CSDN通过智能技术生成

1 命令介绍

awk 是一个强大的文本分析工具,它可以在 Linux 或 Unix 系统下对文本文件进行处理。它可以读取文件,对文件的每一行进行处理,然后按照指定格式输出。除了能处理文本,它比sed和grep多一个功能,即可以处理数据(如加减乘除)

1.1  选项和参数

常见参数

  • -F,fields,设置字段(一列)分隔符;(联想到cut -d)
  • -v,var=value定义awk程序中的一个变量及其默认值(变量在代码里可以用,在外面定义在里面用)

用法

awk '条件类型1 {操作1} 条件类型2{操作2}...' filename

awk内置变量

  • NF:每一行($0)拥有的字段总数
  • NR:目前awk所处理的第几行数据
  • FS:目前的分隔字符,默认是空格键,如果要修改成“:”,可以用{FS=":"},也可以用-F参数:指定分隔符,可指定一个或多个,比如-F '[ ,:]+',空格,逗号和冒号

2 输出结果

1)打印出特定的列

ps -ef | grep osd|awk '{print $13}'

2)打印特定的两列

top -d 2 -n 1 | grep PID -A5|awk '{print $6 " " $7}'

加了空行,但是看起来依旧没有对齐

可以使用制表符\t

top -d 2 -n 1 | grep PID -A5|awk '{print $6 "\t" $7}'

3)指定分隔字符,并且运用比较符

指定【:】为分隔字符,并且第三列的数值小于10

cat /etc/passwd| awk '{FS=":"} $3<10 {print $1 "\t\t" $3}'

 第一行没有正确显示,因为读第1行,分隔行还是空格键

可以使用BEGIN,比如

cat /etc/passwd| awk 'BEGIN {FS=":"} $3<10 {print $1 "\t\t" $3}'

除了BEGIN还有END

BEGIN{} : BEGIN是在awk处理文本之前运行
END{} :当所有的处理全部执行完毕之后,执行END中的相关操作

这里shutdown行,没有对齐,可以使用 printf 可以确保即使某些字段是空的,输出也会按照预定的格式正确对齐。

printf 函数用于格式化输出。%-15s 表示左对齐的字符串,至少占据15个字符的宽度。如果用户名少于15个字符,它会在右侧填充空格以达到这个宽度。

cat /etc/passwd | awk -F: '$3<=10 {printf "%-15s\t%s\n", $1, $3}'

4)使用awk进行计算

先创建一个文件q.txt

1 100
2 200
3 300

每一行的第一列和第二列相加计算

每一列进行相加计算,如果只相加一行,可以通过下面的脚本

awk '{sum+=$2} END {print sum}' q.txt

如果需要每一列相加,需要为每一列分别维护一个累加器

awk '{sum1+=$1; sum2+=$2} END {print "Sum of column 1:", sum1; print "Sum of column 2:", sum2}' q.txt

5)awk进行查询

awk也可以如grep,sed一样进行查询

 sed -n '/[0-9]$/p' a.txt

 grep '[0-9]$' a.txt

6)NR,NF等内置参数的运用

7)自定义变量

awk -v x='ts' -v y='xx' '{print x,y}' q.txt

8)条件判断if .. else ..

awk '{if($1>=2) {x++} else {y++}} END{print "C1:"x"";print "C2:"y""}' q.txt

9)遍历数组​​

awk 'BEGIN{ \
a[0]=1;a[11]=22;a["book"]=32;a["work"]="home"; \
for(i in a){print i,a[i]} \
}'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值