我想计算连续两次" *"之间找到的行数。包括其中一个的人物。 输入:
>*1
AA
BB
CC
>*2
RR
FGRE
>*3
A
输出:
4 >*1
3 >*2
2 >*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}'