社区专栏>AWK入门>
- 基本用法
- $0 当前行
- e.g.: awk '{print $0}' demo.txt
- $1,$2,$3代表空格或制表符分割后的第一、二、三个字段
- e.g.: echo 'this is a test' | awk '{print $3}'
- 指定特殊符号进行分割
- e.g.: awk -F ':' '{print $1}' demo.txt
- 变量
- NF表示当前行多少个字段,$NF代表最后一个字段
- e.g.: echo 'this is a test' | awk '{print $NF}'
- e.g.: awk -F ':' '{print $1, $(NF-1)}' demo.txt
- NR:当前处理行数
- 内置变量:
- FILENAME:当前文件名
- FS:字段分隔符,默认是空格和制表符。
- RS:行分隔符,用于分割每一行,默认是换行符。
- OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
- ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
- OFMT:数字输出的格式,默认为%.6g。
- 函数
- toupper()
- e.g.: awk -F ':' '{print toupper($1)}' demo.txt
- 内置函数:
- tolower():字符转为小写。
- length():返回字符串长度。
- substr():返回子字符串。
- sin():正弦。
- cos():余弦。
- sqrt():平方根。
- rand():随机数。
- 条件
- 格式:输出条件要在动作之前 eg: awk '条件 动作' 文件名
- e.g.: awk '-F' ':' '/usr/ {print $1}' demo.txt
- e.g.: awk -F ':' 'NR % 2 == 1 {print $1}' demo .txt
- e.g.: awk -F ':' '$1 == "root" || $1 == "bin" {print $1}' demo.txt
- 控制语句
- IF语句
- e.g.: awk -F ':' 'if ($1 > "m") print $1' demo.txt
- FOR语句
- e.g.: awk '{for(i=1;i<=NF;i++) print"Field",i,":",$i}' demo.txt
- WHILE语句
- e.g.: awk 'BEGIN{i=1;while(i<=5) print"Iteration",i;i++}'
- 基本用法
- $0 当前行
- e.g.: awk '{print $0}' demo.txt
- $1,$2,$3代表空格或制表符分割后的第一、二、三个字段
- e.g.: echo 'this is a test' | awk '{print $3}'
- 指定特殊符号进行分割
- e.g.: awk -F ':' '{print $1}' demo.txt
- 变量
- NF表示当前行多少个字段,$NF代表最后一个字段
- e.g.: echo 'this is a test' | awk '{print $NF}'
- e.g.: awk -F ':' '{print $1, $(NF-1)}' demo.txt
- NR:当前处理行数
- 内置变量:
- FILENAME:当前文件名
- FS:字段分隔符,默认是空格和制表符。
- RS:行分隔符,用于分割每一行,默认是换行符。
- OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
- ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
- OFMT:数字输出的格式,默认为%.6g。
- 函数
- toupper()
- e.g.: awk -F ':' '{print toupper($1)}' demo.txt
- 内置函数:
- tolower():字符转为小写。
- length():返回字符串长度。
- substr():返回子字符串。
- sin():正弦。
- cos():余弦。
- sqrt():平方根。
- rand():随机数。
- 条件
- 格式:输出条件要在动作之前 eg: awk '条件 动作' 文件名
- e.g.: awk '-F' ':' '/usr/ {print $1}' demo.txt
- e.g.: awk -F ':' 'NR % 2 == 1 {print $1}' demo .txt
- e.g.: awk -F ':' '$1 == "root" || $1 == "bin" {print $1}' demo.txt
- 控制语句
- IF语句
- e.g.: awk -F ':' 'if ($1 > "m") print $1' demo.txt
- FOR语句
- e.g.: awk '{for(i=1;i<=NF;i++) print"Field",i,":",$i}' demo.txt
- WHILE语句
- e.g.: awk 'BEGIN{i=1;while(i<=5) print"Iteration",i;i++}'