随手笔记 awk, linux数据处理工具

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命令就到这了,以后可能用不到吧!

你可能感兴趣的:(随手笔记,Linux)