shell编程(三)--awk

发布于:2023-07-17 22:431人浏览
本以为只是个命令&#xff0c;学起来这就是语言么&#xff0c;参看man手册多试吧 格式 awk pattern{action} <file> ​ A pattern can be: ​ BEGIN ​ END ​ expression 示例&#xff1a; ​ awk {print $0} awk.txt ​ print是打印命令&#xff0c;awk.txt是我们为…

本以为只是个命令,学起来这就是语言么,参看man手册多试吧

格式

awk 'pattern{action}' <file>

​ A pattern can be:
​ BEGIN
​ END
​ expression

示例:

awk '{print $0}' awk.txt

print是打印命令,awk.txt是我们为测试建的文件,内容如下:

aa:sss ddd fff|ff
qwe:d44 88 kkk|099
sdd:6 ff ff ff
ddd|lll:fff

请添加图片描述

  • $变量

    awk会根据空格或制表符,将每一行分成若干字段

    $0:当前行整行;

    $1:第一个字段;

    $2:第二个字段;

    $3:第三个字段;

指定分隔符

awk默认是以空格或制表符分割,也可使用-F指定分隔符

awk -F ':' '{ print $1 }' filepath

请添加图片描述

输入输出

  • 输入

    getline

    getline < file

    command | getline

    command | getline var

  • 输出

print:参数可以是变量、数值或字符串

printf:格式化输出
请添加图片描述

内置变量

​ 除了$变量以外,awk还定义了其他一些变量

ARGC      命令行参数个数
ARGV      命令行参数(awk/filepath)
CONVFMT   数据转换为字符串的格式"%.6g".
ENVIRON   环境变量集合. 
FILENAME  当前输入的文件名.
FS        输入的数据域之间的分隔符,默认空格.
NR        当前输入行数
NF        当前行被分割的列数,$NF代表最后一个字段,$(NF-1)代表倒数第二个字段...
OFS       输出之间的分割符, 默认空格.
OFMT      数值输出格式"%.6g".
ORS       输出之间的分割符,默认换行.
RS        输入之间的分割符,默认换行.
RLENGTH   match函数匹配的字符串长度.
RSTART    match函数匹配的字符串的第一个字符的位置.

请添加图片描述
请添加图片描述

内置函数

  • gsub(r,s,t)
  • index(s,t)
  • length(s)
  • match(s,r)
  • split(s,A,r)
  • tolower(s)
  • toupper(s)
  • mktime(specification)
  • systime()
  • sqrt(x)
  • …(参看man awk)

控制流程语句

  • if ( expr ) statement
  • if ( expr ) statement else statement
  • while ( expr ) statement
  • do statement while ( expr )
  • for ( opt_expr ; opt_expr ; opt_expr ) statement
  • for ( var in array ) statement
  • continue
  • break
相关文章
    最新文章
    热门标签