awk
awk 是处理文本文件的一个应用程序,几乎所有 Linux 系统都自带这个程序。
它依次处理文件的每一行,并读取里面的每一个字段。对于日志、CSV 那样的每行格式相同的文本文件,awk可能是最方便的工具。
基本用法
$awk 动作 文件名
demo: $awk '{print $0}' demo.txt print 打印, $0 当前行 上面命令的执行结果,就是把每一行原样打印出来
awk会根据空格和制表符,将每一行分成若干字段,依次用$1、$2、$3代表第一个字段、第二个字段、第三个字段等等。
213:456:789
-F参数指定分隔符为冒号,$1,$2,$3 分别为213 456 789
以上方法常用于执行linux命令 获取想获得的相应值
变量
变量NF表示当前行有多少个字段,因此$NF就代表最后一个字段。
$echo 'this is a test' | awk'{print $NF}' => test
$(NF-1)代表倒数第二个字段。
变量NR表示当前处理的是第几行。
- FILENAME:当前文件名
- FS:字段分隔符,默认是空格和制表符。
- RS:行分隔符,用于分割每一行,默认是换行符。
- OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
- ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
- OFMT:数字输出的格式,默认为%.6g。
函数
函数toupper()用于将字符转为大写。
$awk-F':''{ print toupper($1) }'demo.txt
- tolower():字符转为小写。
- length():返回字符串长度。
- substr():返回子字符串。
- sin():正弦。
- cos():余弦。
- sqrt():平方根。
- rand():随机数。
条件
$awk '条件 动作' 文件名
$awk -F':''/usr/ {print $1}' demo.txt