分享交流
合作共赢!

AWK命令之基础详解(1)

参考:https://blog.51cto.com/13691477/2115568

1.awk简介

Linux运维三剑客:grep、sed、awk

grep:更适合单纯的查找或匹配文本

sed:更适合编辑匹配到的文本

awk:更适合格式化文本,对文本进行较复杂的格式处理

awk是一个报告生成器,它拥有强大的文本格式化能力。由Alfred Aho、Peter Weinberger和Brian Kernighan这三个人创造的,awk由这三个人的姓氏的首字母组成。

awk语法:awk [options] ‘Pattern{Action}’ file,即至少包括awk ” file三部分

awk是逐行处理的,默认以“换行符”为标记识别每一行,也就是说每遇到换行符就代表一行的结束,新行的开始。awk会按照指定的分隔符分割当前行,如果没有指定,默认空格为分隔符。

2.awk分隔符

分隔符分为”输入分隔符”和”数出分隔符”:

输入分隔符:field separator,简称FS(默认为空格,即空白字符),如:awk -F# ‘{print $1,$2}’ file,此处用-F指定分隔符为#,也可以用这种格式 -v FS=’#’,如:awk -v FS=’#’ ‘{print $1,$2}’ file

输出分隔符:output field separator,简称OFS(默认也是空格),如:awk -v OFS=’#’ {print $1,$2} file

2.变量

2.1内置变量

$0表示整行,同$n,

$NF表示当前行分割后的最后一列,

FS:  输入字符分割符

OFS:数出字符分隔符

RS:输入记录分隔符(输入换行符),指定输入时的换行符

ORS:  数出记录分隔符(数出换行符),输出时指定符号代替符

NF: number of Field,表示字段数量,即当前行被分隔符分割后共有几个字段,用$(NF-n)可表示当前行某个字段值。

NR:  行号,当前处理文本行的行号

FNR:  各文件分别计数的行号

FILENAME:当前文件名

ARGC:命令行参数的个数

ARGV:数组,保存命令行参数值

2.2、自定义变量

方法一:-v varname=value 变量名区分大小写,如:awk -v myvar=”testcontent” ‘BEGIN{print myvar}’,myvar=后面可以是变量如:$?

方法二:在program中直接定义,如:awk ‘BEGIN{ myvar=”1″; print myvar}’,可同时定义多个变量

3.模式

awk语法:awk [options] ‘Pattern{Action}’ file1,file2…

Pattern即为模式:awk特殊模式:BEGIN和END

BEGIN模式指定了处理文本之前需要执行的操作,如:awk ‘BEGIN{print “123”,”456″}{print $n}’ filename

END模式指定了处理完文本之后需要执行的操作,如:awk ‘{print $n}END{print “abc”,”edf”}’ filename

printf命令

语法:prinft “指定的格式” “文本1” “文本2” “文本3” ……

printf可以按照我们指定的格式输出文本,具有格式化输出文本的能力。与echo不同的是,echo数出文本自动换行,printf则不会,可在尾部使用转义符\n,如:printf “test\n”

%s:代表传入的参数,%s\n:代表将每一个传入的参数格式化为换行

修饰符:数字,-,+

%7s:在%s中的替换符s前加上数字(或者叫修饰符),表示当前替换符对应的输出宽度为7个字符宽,如果输出不足7个字符,则用空格补全,如果超出7个字符,超出部分也会显示出来

%-7s:”-“表示左对齐,默认不加”-“时表示右对齐,”-“也属于修饰符

%+7s:”+”表示若输出中显示数字,且为正数时,前面会自动加上+,如:+11

%12.3f:表示对应的替换符”%f”的输出宽度为12个字符,小数点精确度为3

%12.5d:小数点后的数字表示整数长度,长度不够时用0补全,如:printf

常用格式替换符:

%s 字符串

%f 浮点格式(float或double)

%b 相对应的参数中包含转义字符时,可以使用此替换符进行替换,对应的转义符会被转义

%c ASCII字符,显示相对应参数的第一个字符

%d,%i  十进制整数

%o  不带正负号的八进制值

%u 不带正负号的十进制值

%x  不带正负号的十六进制值,使用a至f表示10到15

%X  不带正负号的十六进制值,使用A至F表示10到15

%%  表示”%”本身

常用转义符:

\a  警告字符,通常为ASCII的BEL字符

\b  后退

\c  抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略

\f  换页(formfeed)

\n  换行

\r  回车

\t  水平制表符

\v  垂直制表符

\\  一个字面上的反斜杠字符,即”\”本身

\ddd   表示1到3位数八进制的字符,仅在格式字符串中有效

\0ddd   表示1到3位的八进制字符

 

 

 

赞(2) 打赏
未经允许不得转载:琼杰笔记 » AWK命令之基础详解(1)

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏