awk 使用
awk 是一个文本处理工具,主要用在文本“列处理”
1
| awk + 选项(可不带) +'命令' + 处理文件或内容
|
选项参数:
可输入awk -W help查看
常用
1 2 3 4 5 6 7 8
| -F fs or --field-separator fs 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F: 则以“:” 分割。
-v var=value or --asign var=value 赋值一个用户定义变量。
-f scripfile or --file scriptfile 从脚本文件中读取awk命令。
|
变量名关键词
表示该行多少个字段1 2 3 4 5 6 7 8 9 10 11 12 13
| $NF = 该行最后一个字段 $(NF-1) = 该行倒数第二个字段
NR: 表示当前处理的行数
print 打印后面字段
FILENAME:当前文件名 FS:字段分隔符,默认是空格和制表符。 RS:行分隔符,用于分割每一行,默认是换行符。 OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。 ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。 OFMT:数字输出,默认为%.6g
|
函数
toupper():字符转为大写。
tolower():字符转为小写。
length():返回字符串长度。
substr():返回子字符串。
sin():正弦。
cos():余弦。
sqrt():平方根。
rand():随机数。
例如:
1 2 3
| awk -F ':' '{ print toupper($1) }' test.txt 输出 第一列 并把结果转换成大写
|
条件语句
输出奇数列
1
| $ awk -F ':' 'NR % 2 == 1 {print $1}' test.txt
|
输出第三列之后的列
1
| $ awk -F ':' 'NR >3 {print $1}' test.txt
|
条件语句
1 2 3 4 5
| # 输出第一个字段的第一个字符大于m的行 awk -F ':' '{if ($1 > "m") print $1}' test.txt
# 输出第一个字符大于m的行,否则输出--- $ awk -F ':' '{if ($1 > "m") print $1; else print "---"}' test.txt
|
基本用法
打印test文件中 第1、3列
1 2 3
| # 以空格或TAB分割 awk '{print $1,$3}' test.txt
|