awk基本介绍:
命令格式:awk '条件类型1{操作1} 条件类型2{操作2}...' filename or stdin
awk功能: 将接受到的每一行根据FS变量分解成字段处理
处理流程:读第一行,将第一行数据根据字段写入$1,$2...,$0是本行数据
根据条件类型,进行操作
完成操作,下一行读入,重复操作。
note:若FS不是默认值,需要使用BEGIN{FS="分割符号"}
awk的特殊变量:NF行字段总数,NR目前awk处理第几行,FS目前使用的分割符,默认FS=" "
awk使用例子
使用BEGIN和自定义分割符
cat awk_test1.txt | awk 'BEGIN{FS=":"} {print $1"\t"$2"\t"$3}' > awkout1.txt
条件的使用:>, < , ==, >=, <=, !=
cat awk_test2.txt | awk 'NR>2{printf "%d, %d,%d\n", $2, $3, $4}' > awkout2.txt
使用if条件
cat awk_test2.txt | \
>awk '{if(NR==1) printf"%10s, %10s, %10s, %10s, %10s\n", $1, $2, $3, $4,"Total"}
>NR>=2{total=$2+$3+$4
>printf"%10s, %10s, %10s, %10s, %10.2f\n", $1, $2, $3, $4,total}' > awkout3.txt
输入文件awk_test1.txt,
line :Name :Value
1 :fst :book
2 :scd :cup
test1:test2:test3:text
awk_test2.txt
Name 1st 2nd 3th
VBird 23000 24000 25000
DMTsai 21000 20000 23000
Bird2 43000 42000 41000
输出文件awkout1.txt
line Name Value
1 fst book
2 scd cup
test1 test2 test3
awkout2.txt
23000, 24000, 25000
21000, 20000, 23000
43000, 42000, 41000
awkout3.txt
Name, 1st, 2nd, 3th, Total
VBird, 23000, 24000, 25000, 72000.00
DMTsai, 21000, 20000, 23000, 64000.00
Bird2, 43000, 42000, 41000, 126000.00
awk命令就到这了,以后可能用不到吧!