Linux,awk以及如何计算和打印文件中的连续行?

时间:2017-04-29 09:30:26

标签: linux shell awk

例如我有一个像:

这样的文件
  apple
  apple
  strawberry

我想要实现的是打印连续行(apple)并计算连续行数(2)如下:apple-2使用awk。

到目前为止我的代码是这样的,但它执行以下操作:apple1-apple1。

awk '{current = $NF;
getline;
if($NF == current) i++; 
printf ("%s-%d",current,i) }' $file

提前谢谢。

2 个答案:

答案 0 :(得分:1)

uniq -c和awk如何过滤:

$ uniq -c foo|awk '$1>1'
      2   apple

答案 1 :(得分:0)

假设:

$ cat file
apple
apple
strawberry
mango
apple
strawberry
strawberry
strawberry

你可以这样做:

$ awk '$1==last{seen[$1]++} 
               {last=$1}
       END{for (e in seen) 
            print seen[e]+1, e}' file
2 apple
3 strawberry