awk的命令格式
命令格式
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
常用命令选项
命令选项
释义
-F fs
fs 只当输入分隔符,fs可以使字符串或者正则表达式
-v var=value
赋值一个用户定义变量,将外部变量传递给awk
-f scriptfile
从脚本文件中读取awk命令
awk内置命令
内置命令
释义
$n
当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。
$0
这个变量包含执行过程中当前行的文本内容。
ARGC
命令行参数的数目。
ARGIND
命令行中当前文件的位置(从0开始算)。
ARGV
包含命令行参数的数组。
CONVFMT
数字转换格式(默认值为%.6g)。
ENVIRON
环境变量关联数组。
ERRNO
最后一个系统错误的描述。
FIELDWIDTHS
字段宽度列表(用空格键分隔)。
FILENAME
当前输入文件的名。
NR
表示记录数,在执行过程中对应于当前的行号
FNR
同NR :,但相对于当前文件。
FS
字段分隔符(默认是任何空格)。
IGNORECASE
如果为真,则进行忽略大小写的匹配。
NF
表示字段数,在执行过程中对应于当前的字段数。 print $NF答应一行中最后一个字段
OFMT
数字的输出格式(默认值是%.6g)。
OFS
输出字段分隔符(默认值是一个空格)。
ORS
输出记录分隔符(默认值是一个换行符)。
RS
记录分隔符(默认是一个换行符)。
RSTART
由match函数所匹配的字符串的第一个位置。
RLENGTH
由match函数所匹配的字符串的长度。
SUBSEP
数组下标分隔符(默认值是34)。
awk的用法实例
获取内容的第2列
[root@hadoop-master test-awk]
总用量 8. 0K
- rwxr- xr- x. 1 root root 60 9月 24 23:06 file2. text
- rw- r-- r-- . 1 root root 0 9月 24 23:04 filename2
- rwxr- xr- x. 1 root root 45 9月 24 23:06 file. txt
[root@hadoop-master test-awk]
8. 0K
1
1
1
获取每一行的行数
[root@hadoop-master test-awk]
1 总用量
2 - rwxr- xr- x.
3 - rw- r-- r-- .
4 - rwxr- xr- x.
内置函数
算数函数
格式
解释
atan2( y, x )
返回 y/x 的反正切。
cos( x )
返回 x 的余弦;x 是弧度。
sin( x )
返回 x 的正弦;x 是弧度。
exp( x )
返回 x 幂函数。
log( x )
返回 x 的自然对数。
sqrt( x )
返回 x 平方根。
int( x )
返回 x 的截断至整数的值。
rand( )
返回任意数字 n,其中 0 <= n < 1。
srand( [expr] )
将 rand 函数的种子值设置为 Expr 参数的值,或如果省略 Expr 参数则使用某天的时间。返回先前的种子值。
字符串内置函数
格式
解释
gsub( Ere, Repl, [ In ] )
除了正则表达式所有具体值被替代这点,它和 sub 函数完全一样地执行。
sub( Ere, Repl, [ In ] )
用 Repl 参数指定的字符串替换 In 参数指定的字符串中的由 Ere 参数指定的扩展正则表达式的第一个具体值。sub 函数返回替换的数量。出现在 Repl 参数指定的字符串中的 &(和符号)由 In 参数指定的与 Ere 参数的指定的扩展正则表达式匹配的字符串替换。如果未指定 In 参数,缺省值是整个记录($0 记录变量)。
index( String1, String2 )
在由 String1 参数指定的字符串(其中有出现 String2 指定的参数)中,返回位置,从 1 开始编号。如果 String2 参数不在 String1 参数中出现,则返回 0(零)。
length [(String)]
返回 String 参数指定的字符串的长度(字符形式)。如果未给出 String 参数,则返回整个记录的长度($0 记录变量)。
blength [(String)]
返回 String 参数指定的字符串的长度(以字节为单位)。如果未给出 String 参数,则返回整个记录的长度($0 记录变量)。
substr( String, M, [ N ] )
返回具有 N 参数指定的字符数量子串。子串从 String 参数指定的字符串取得,其字符以 M 参数指定的位置开始。M 参数指定为将 String 参数中的第一个字符作为编号 1。如果未指定 N 参数,则子串的长度将是 M 参数指定的位置到 String 参数的末尾 的长度。
match( String, Ere )
在 String 参数指定的字符串(Ere 参数指定的扩展正则表达式出现在其中)中返回位置(字符形式),从 1 开始编号,或如果 Ere 参数不出现,则返回 0(零)。RSTART 特殊变量设置为返回值。RLENGTH 特殊变量设置为匹配的字符串的长度,或如果未找到任何匹配,则设置为 -1(负一)。
tolower( String )
返回 String 参数指定的字符串,字符串中每个大写字符将更改为小写。大写和小写的映射由当前语言环境的 LC_CTYPE 范畴定义。
toupper( String )
返回 String 参数指定的字符串,字符串中每个小写字符将更改为大写。大写和小写的映射由当前语言环境的 LC_CTYPE 范畴定义。
sprintf(Format, Expr, Expr, . . . )
根据 Format 参数指定的 printf 子例程格式字符串来格式化 Expr 参数指定的表达式并返回最后生成的字符串。
时间内置函数
格式
解释
mktime( YYYY MM dd HH MM ss[ DST])
生成时间格式
strftime([format [, timestamp]])
格式化时间输出,将时间戳转为时间字符串 具体格式,见下表.
systime()
得到时间戳,返回从1970年1月1日开始到当前时间(不计闰年)的整秒数