计算两个字符之间的行数

时间:2014-10-22 18:42:03

标签: bash awk sed

我想计算连续两次" *"之间找到的行数。包括其中一个的人物。 输入:

>*1
AA
BB
CC
>*2
RR
FGRE
>*3
A

输出:

4 >*1
3 >*2
2 >*3

其中第一个字段是*'之间的行数,第二个字段是包含它们的字符串。

3 个答案:

答案 0 :(得分:2)

使用awk你可以这样做:

awk '/\*/{if (p) print c, p; p=$0;c=0} {c++} END{if (p) print c, p}' file
4 >*1
3 >*2
2 >*3

答案 1 :(得分:1)

试试这个:

cat  x1.txt | perl -ne '
  chomp;
  if ( $_ =~ /^>\*/ ) {
    $l1{$_}++;
  };
  $prev=$_;
  while(<>){
    chomp;
    if ( $_ =~ /^>\*/ ) {
       $prev=$_;
       $l1{$prev}++;
    } else { 
       $l1{$prev}++;}
    };             
    if (eof) {
      foreach $m1  ( keys %l1 ){
        print qq($m1 , $l1{"$m1"}\n);
      };
 };'

答案 2 :(得分:1)

这是我的命令:

nl | sed -n '/*/p;/*/{1!p};$p' | xargs -n4 | awk '{print $3-$1, $2}'