博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
awk的基础应用
阅读量:6201 次
发布时间:2019-06-21

本文共 1962 字,大约阅读时间需要 6 分钟。

awk是一种编程语言,主要用于在linux/unix下对文本和数据进行处理,是linux/unix下的一个工具。数据可以来自标准输入、一个或多个文件,或其它命令的输出。awk的处理文本和数据的方式:逐行扫描文件,默认从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。gawk是awk的GNU版本,它提供了Bell实验室和GNU的一些扩展。下面介绍的awk是以GNU的gawk为例的,在linux系统中已把awk链接到gawk,所以下面全部以awk进行介绍。

awk命令两种使用方式:
1)命令模式
awk [options] 'commands' file(s)
option 部分
-F 定义字段分割符号
-v 定义变量并赋值
command 部分:
1、范围说明或者正则表达式或者{awk命令语句1;awk命令语句2;}
2、范围说明部分可以是BEGIN、END、逻辑表达式或者为空
3、awk命令语句间用分号间隔
4、引用shell 变量需用双引号引起
2)脚本模式
awk [options] -f scriptfile file(s)
特点:
1、awk脚本是awk命令的清单
2、命令需要用分号间隔
3、#号开头的是注释行
4、# !/bin/awk -f
字段分割及相关变量:
$1,$2,$3...$n:awk中用该顺序形式表示files中每行以间隔符号分割的各列的不同字段
$0表示文本本身
注:
awk默认以空格符为间隔符号将每行分割为单独的字段,也可以使用awk内置变量FS定义间隔符号
NF 表示当前记录的字段数(列数)
$NF 最后一列
$(NF-1) 倒数第二列
FNR/NR 行号
FILENAME 文件名
"\t" 制表符
RS 换行符
"" 打印字符串
FS 定义间隔符

关于awk的练习:

1.截取/etc/passwd前五行的倒数第二列

head -5 /etc/passwd|tail -5|awk -F":" '{print $(NF-1)}'

2.打印第五行
head -5 /etc/passwd |tail -1
awk 'NR==5  {print $0}' /etc/passwd
awk '{if (NR==5) print $0}' /etc/passwd
3.打印第五行的第五列
awk -F: 'NR==5  {print $5}' /etc/passwd
4.打印第五行和第六行
awk 'NR==5||NR==6 {print $0}' /etc/passwd

5.找出/etc/以.conf结尾的文件的名字(如:kernelcap-2.6.18-164.el5.conf,只需要得到kernelcap-2.6.18-164.el5就可以了)

find /etc/ -name "*.conf"|awk -F"." '{print $(NF-1)}'|awk -F"/" '{print $NF}'

6.打印每一行的最后一列(可以以/etc/passwd文件为例,以下相同)

cat /etc/passwd |awk -F":" '{print $NF}'
7.打印每行的字段数
 cat /etc/passwd |awk -F":" '{print NF}'
8.打印第五行的字段数
cat /etc/passwd |awk -F":" '{print FNR,NF}'|grep ^5.[[:digit:]]$
9.打印最后一行
cat /etc/passwd|tail -1
10.打印最后一行的最后一列
cat /etc/passwd|tail -1|awk -F":" '{print $NF}'
11.打印前五行
 cat /etc/passwd|head -5
12.打印五到十行,并在前面加上行号
awk -F: '{print NR,$0}' /etc/passwd|head -10|tail -6
13.打印奇数行 (删除偶数行)
cat /etc/passwd|grep -n x|awk '{if (NR%2==1) print $0}'
14.打印偶数行 (删除奇数行)
cat /etc/passwd|grep -n x|awk '{if (NR%2==0) print $0}'

 

15.统计/etc/passwd一共出现了多少次bash字符 (要求用awk)

cat /etc/passwd|grep bash|awk -F"[:/]" '{
{count++;}} END{print count}'

 

转载于:https://www.cnblogs.com/lvzehua2009/p/8134325.html

你可能感兴趣的文章
nginx 是如何处理访问请求的
查看>>
wget参数用法详解
查看>>
使用curl命令查看访问url的时间
查看>>
python添加环境变量
查看>>
DP-01背包 (题)
查看>>
WinForm中跨线程操作控件
查看>>
CODING 敏捷实践完全指南
查看>>
unittest测试框架和测试报告的输出实例(一)
查看>>
下MFC中对象、句柄、ID之间的区别.
查看>>
如何构建Win32汇编的编程环境(ONEPROBLEM个人推荐)
查看>>
Asp.Net MVC 分页、检索、排序整体实现
查看>>
Flymeos插桩适配教程
查看>>
还在用PS磨皮去皱?看看如何用神经网络高度还原你的年轻容貌!
查看>>
大端模式与小端模式、网络字节顺序与主机字节顺序
查看>>
微信支付申请90%的商户都卡在这儿了,申请微信支付,商户功能设置详细说明...
查看>>
制作一款微信表情
查看>>
高仿Instagram 页面效果android特效
查看>>
我的友情链接
查看>>
Juniper 基于路由的×××
查看>>
HDU - 2018 - 母牛的故事(dp)
查看>>