首先建立文本log.txt:
2 this is a test 3 Are you like awk This's a test 10 There are orange,apple,mongo1) 过滤第一例大于2的行. 例如:awk '$1>2' log.txt
2) 过滤第一列大于2并且第二列等于’Are’的行. 例如:awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt
注意:~ 表示模式开始。// 中是模式。
例子:
# 输出第二列包含 "th",并打印第二列与第四列 $ awk '$2 ~ /th/ {print $2,$4}' log.txt --------------------------------------------- this a # 输出包含"re" 的行 $ awk '/re/ ' log.txt --------------------------------------------- 3 Are you like awk 10 There are orange,apple,mongo # 忽略大小写 $ awk 'BEGIN{IGNORECASE=1} /this/' log.txt --------------------------------------------- 2 this is a test This's a testBEGIN{ 这里面放的是执行前的语句 }
END {这里面放的是处理完所有的行后要执行的语句 }
{这里面放的是处理每一行时要执行的语句}
例如cal.awk内容如下:
#!/bin/awk -f #运行前 BEGIN { math = 0 english = 0 computer = 0 printf "NAME NO. MATH ENGLISH COMPUTER TOTAL\n" printf "---------------------------------------------\n" } #运行中 { math+=$3 english+=$4 computer+=$5 printf "%-6s %-6s M