OFS不生效的问题
在碰到awkOFS改变输出分隔符的时候,总是不生效,原因是重新设置分隔符后,awk的域未重构的问题:
# echo "a b c d"|awk 'BEGIN{OFS=";"}{print $0}'
a b c d
#  echo "a b c d"|awk 'BEGIN{OFS=";"}{$1=$1;print $0}'
a;b;c;d
运算$1=$1,awk会认为$0发生变化了,会对整个$0进行重新构建。
 
awk取大小值的方法
a=a>b?a:b    如果a>b,则让a=a,否则a=b
$ awk 'END{a=2;b=3;a=a>a:b;print a}' 1
3
$ awk 'END{a=4;b=3;a=a>b?a:b;print a}' 1
4
$ awk 'END{a=4;b=3;a=a<b?a:b;print a}' 1
3
 
awk比较两个文件不同
awk 'ARGIND==1 {a[$0]} ARGIND>1&&!($0 in a) {print $0}' a.txt b.txt
打印A中有,B中没有的