样本集:
ussr 8649 275 asia
canada 3852 25 north america
china 3705 1032 asia
usa 3615 237 north america
brazil 3286 134 south america
india 1267 746 asia
mexico 762 78 north america
france 211 55 europe
awk中如果多条语句要写在同一行,需要在语句之间添加分号。
如果是在命令行输入的awk语句,那么后边一定是单引号,不能是双引号。
要能看懂awk的报错。
如果awk程序过多,可以从文件读入awk程序。awk -f awk_file filename
cat /etc/group| awk -F: '{ print $1;print $2}' 。awk中以分号分隔的是两条语句,这种输出结果是先输出第一行的第一个字段,换行,然后输出第一行的第二个字段。
如果是{ print $1, $2},会在一行内把两个字段依次输出。如果要在两个字段中间加分隔,只需如下:
cat /etc/group| awk -F: '{ print $1"# "$2}'。在两个字段之间添加双引号,引号引起来的部分就是分隔符。引号和两个字段之间不加逗号,结果会紧密相连:
如果在引号和两边的两个字段之间添加了逗号,那么两个字段与#之间会添加一个空格,不可添加两个逗号。结果如下:
awk中分为模式和动作。模式就是条件,是用来匹配的。模式和动作都需要用单引号括起来,此外,动作需要用{}括起来。模式和匹配之间没有分隔符,但是可以有空格。如下:
cat sample |awk '$2<10*$3 { print}',就会把符合模式的整行打印出来。这里的print后边没有跟变量,表示打印整行,$0也是打印整行。
将表达式用作模式:
在关系比较中,如果两个操作数都是数值,才会按照数值的方式比对。如果有一个字符串,就会按照字符串的方式比较。
比较运算符有 <、<=,>、>=、!=、==、
字符串匹配模式:
1、/regexpr/,当文档中有语句被这个正则表达式匹配,则选中。不能用双引号。
2、expression ~ /regexpr/,当expression符合右边的正则表达式的时候,选中。expression 通常是字段值。比如: $4~/asia/。这样就把整个句子包含某一个单词缩小到某一个字段包含某一个单词。
3、expression !~/regexpr/,当 expression不符