shell中的awk命令

格式awk [选项] '[BEGIN{}]条件{动作}[END{}]' filename
只能是单引号。

选项:

-F 修改间隔参数,例如-F: ,修改间隔参数为:

条件:

/string/匹配字符串(支持正则表达式)
NR > 7
BEGIN{action}在读入之前执行action
单分支 if () {}
双分支 if () {} else {}
多分支 if(){} else if() {} else{}

动作:

{print var}打印变量
{print var,var2}打印多个变量,间隔符OFS
{OFS="+"}修改输出字段分隔符
{printf "用户名:%s 用户id:%s\n",$1,$3}格式化打印
{print length($0)}打印行字符数
内置变量
$0: 当前行的内容
$1: FS切割的第一个列字段
NR: 记录号(行号),每处理完一条记录,NR值加1
NF: 保存记录的字段数(总共保存的列数),$1,$2...$100
FS: 输入字段分隔符,默认空格
OFS:输出字段分隔符
AWK 使用一个 波浪线 ( ~ ) 作为正则表达式匹配运算。
例如awk '\(0 ~ "aa"' a.txt那么会输出含有aa的文本行。 `DATE_STR=\)(echo $FILESERVER | awk -F '/' '{ i=1; while(i<=NF) {if( $i ~ /[1]+-[0-9]+/) print $i; i++} }')`
反之,!~表示正则表达式不匹配运算符。


  1. 0-9 ↩︎

posted @ 2023-01-31 18:24  心比天高xzh  阅读(125)  评论(0)    收藏  举报