假设文件名为log
统计行数 : wc -l log
把每行文本按照某元素split,并逐行打印split后的元素:cat log | awk -F "\t" '{print $0}' $0或者省略$表示打印整行,$1表示打印第一个元素。实际上 "\t" 和空格不需要特殊的说明分隔符,直接cat log | awk '{print $1}' 和 cat log | awk -F "\t" '{print $1}' 效果是一样的。print和$1之间有没有空格都可以。
去除重复的行并打印:cat log | awk '!a[$0]++{print}' 中括号中的$0不可省略
只显示重复行:cat log | awk 'a[$0]++{print}'
按照第一个元素删除重复行:cat log | awk '!a[$1]++{print}' 若两条数据第一列重复,则显示首次出现的数据。
按照第一个和第二个元素删除重复行:cat log | awk '!a[$1" "$2]++{print}'
按照第一个和第二个元素删除重复行后显示行数:cat log | awk '!a[$1" "$2]++{print} | wc -l'
awk '!a[$1" "$2]中自动检测空格和tab,默认全部换成一个空格。所以元素之间无论有多少个空格和tab,一律视为一个空格。
awk '!a[$1" "$2]和awk '!a[$1"\t"$2]效果相同。
按照第一个和第二个元素删除重复行后显示第三个元素大于50的行数:
cat log | awk '!a[$1" "$2]++{print} | awk '{if($3>50)print}' | wc -l