2017-03-22 6 views
-1

から特定の行を分割:マッチングと私はそうはbash/awkの中でやると思いますいくつかの簡潔なPerlの同等物(スクリプトではなく、ワンライナー内で使用するため)を探しています.txtファイル

8523723 reads; of these: 
1256265 reads; of these: 
2418091 reads; of these: 

印刷「8523723」と私は行動したいと整合可能ライン(の残りの部分を無視:この形式でいくつかを含む行の多くが含まれている指定した.txtファイルを通じてトロール

Count=$(awk '/reads/ && ! seen {print $1; seen=1}' < input.txt) 

最初に一致したインスタンスで)。次に

各マッチライン上の数字の累計を作成し
Count2=$(awk '/paired/ {sum+=$1} END{print sum}' < input.txt) 

25 paired; of these: 
15 paired; of these: 

、40

+0

最初のポイントで重複を削除しますか?そして2番目のポイントは、重複した行を数えます。私は正しいかもしれません。 – ssr1012

+0

本質的に、はい。 (1)一致した最初の行から番号を取り、一致した他のすべての行を無視する(2)すべての行を一致させて数を合計する – AnnaSchumann

+1

'perl -nE '/ reads/&& do {print; exit}' input.txt' 'perl -nE '/ paired/&& $ sum ++; END {say $ sum} 'input.txt' –

答えて

1

を印刷する最初のものである:

while (<>) { 
    if (/reads/) { 
    print; 
    last; 
    } 
} 

第二つあります:

my $total = 0; 
while (<>) { 
    if (/(\d+) paired/) { 
    $total += $1; 
    } 
} 
say $total; 

あなたは間違いなく両方のゴルフを楽しむことができます。しかし、これらのバージョンは読み取り可能です:-)

関連する問題