![shell中最强大,实用的命令awk,梳理清楚就是这么简单](http://img.jiangsulong.com/220402/1R5596331-0.jpg)
文章插图
awk的工作模式awk是一个文本处理工具,通常用于处理数据并生成结果报告
语法格式
第一种形式
awk 'BEGIN{}pattern{commands}END{}' file_name
![shell中最强大,实用的命令awk,梳理清楚就是这么简单](http://img.jiangsulong.com/220402/1R5595a1-1.jpg)
文章插图
语法格式解释
BEGIN正式处理数据之前
pattern匹配模式
{commands}匹配命令,可能多行
END处理完所有匹配数据后执行
第二种形式
standard output | awk 'BEGIN{}pattern{commands}END{}'awk的内置变量
![shell中最强大,实用的命令awk,梳理清楚就是这么简单](http://img.jiangsulong.com/220402/1R5595210-2.jpg)
文章插图
内置变量含义
$0整行内容
【shell中最强大,实用的命令awk,梳理清楚就是这么简单】$1-$n当前行的第1-n个字段(按照指定分隔符分割后)
NF(Number Field)当前行的字段个数,也就是多少列
NR(Number Row)当前行的行号,从1开始计数
FNR(File Number Row)多文件处理时,每个文件行号单独计数,都是从0开始
FS(Field Separator)输入字段分割符 。不指定默认以空格或者Tab键分割
RS(Row Separator)输入行分割符 。默认回车n
OFS(Output Field Sepatator)输出字段分割符 。默认为空格
ORS(Output Row)输出行分隔符 。默认为回车
FILENAME当前输入的文件名字
ARGC命令行参数个数
ARGV命令行参数数组
看一下/etc/passwd文件的内容cat /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin输出文件的每行内容awk '{print $0}' /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin输出第二列内容需要指定分隔符:
awk 'BEGIN{FS=":"}{print $2}' /etc/passwdxxx不需要指定分割符,默认空格,tab键,多个也可以分隔(如一个空格+一个tab键)
show.txt文件内容如下
# 空格分隔Python JAVA php# tab键分隔flink hadoop stormawk '{print $1}' show.txt输出如下:
pythonflink
![shell中最强大,实用的命令awk,梳理清楚就是这么简单](http://img.jiangsulong.com/220402/1R5593C9-3.jpg)
文章插图
输出每一行有多少列awk '{print NF}' show.txt输出如下
33可以用这个输出每一行的最后一列的值
awk '{print $NF}' show.txt输出行号awk '{print NR}' show.txt输出如下(没有混合使用,例子比较简单)
12对每个文件的行号单独计数awk '{print FNR}' show.txt /etc/passwd同时指定行分隔符和列分隔符show.txt的文件内容如下
python|java|php--flink|hadoop|storm先输出每一行数据
awk 'BEGIN{RS="--"}{print $0}' show.txt输入如下
python|java|phpflink|hadoop|storm输出每一行的第二列
awk 'BEGIN{RS="--";FS="|"}{print $2}' show.txt输出如下
javahadoop在上面基础上指定行分隔符
awk 'BEGIN{RS="--";FS="|";ORS="&"}{print $2}' show.txt输出如下
java&hadoop&再次指定列分隔符
awk 'BEGIN{RS="--";FS="|";ORS="&";OFS="@@"}{print $1,$2}' show.txt输出如下
python@@java&flink@@hadoop&输出文件名字show.txt的文件内容如下
python|java|phpflink|hadoop|stormawk '{print FILENAME}' show.txt输入如下,因为是对行进行处理,所以有几行,输出几次文件名
show.txtshow.txt使用jps -l输入如下,运行的服务如下
34476 com.st.cis.main.WeiboSerachServer4652 mbase-spider-parser-1.0.jar43820 kolink-xhs-1.0.jar
推荐阅读
- 篮球中最基本的联防战术,你真的了解“二三联防”吗?
- 盘点计算机科学中最重要的32个算法
- 苹果备忘录中你不知道的功能,原来这么强大!现在知道不算浪费
- 面部识别这么强大,是如何实现的?其原理就是这么简单
- 别小瞧了手机的蓝牙功能!这5个强大用法,你可能还不知道
- 神奇“针灸”落户欧洲 针灸的功效真有这么“强大”
- 微信隐藏的四种长按功能
- 华为手机中最不能错过的几大功能
- 公文写作中最常见的10种标点错误
- 测试中最基本的linux命令