0

非常に巨大なドキュメントから情報を抽出しようとしています。ファイルは次のパターンに従います。

'>Title 1'

0 200, >name [numbers&letters]

1 200, >name [numbers&letters] 

2 200, >name [numbers&letters]

'>Title 2'

0 200, >name [numbers&letters]

1 200, >name [numbers&letters] 

...

'>Title 600.000'

間の行のグループごとにTitle、タブで区切られた 3 つの列を出力する必要があります

  • それぞれの間の行数Title
  • name
  • グループの最初の行の 2 列目の番号 (最初の行は常に で始まります0) – この例では、番号は200

Bash と awk/sed を試していますが、このタスクの一種のループを定義できません。何か案は?

4

2 に答える 2

2

テストされていませんが、近いはずです:

awk -F'[ ,>]+' '
/^.>/ {
    if (count != "") { printf "%s %d %d\n", name, number, count }
    count = 0
    name = number = ""
    next
} 
NF {
    if (++count == 1) { number = $2; name = $3 }
}
END {
    if (count != "") { printf "%s %d %d\n", name, number, count }
}
' file
于 2013-05-22T12:46:35.750 に答える