Ich habe eine Protokolldatei wie unten,
- UTT (1): test_1978_recreatie_1656.wav
lattice-to-ctm-conf ark:- output/spk001_test_1978_recreatie_1656_1bestsym.ctm
online2-wav-nnet3-latgen-faster --online=false --do-endpointing=false --frame-subsampling-factor=3 --config=exp/tdnn1a_sp_bi_online/conf/online.conf --max-active=7000 --beam=15.0 --lattice-beam=6.0 --acoustic-scale=1.0 --word-symbol-table=exp/tdnn1a_sp_bi_online/graph_s/words.txt exp/tdnn1a_sp_bi_online/final.mdl exp/tdnn1a_sp_bi_online/graph_s/HCLG.fst 'ark:echo spk001 test_1978_recreatie_1656|' 'scp:echo test_1978_recreatie_1656 raw_data/spk001/test_1978_recreatie_1656.wav|' ark:-
test_1978_recreatie_1656 wij zullen <unk>
LOG (online2-wav-nnet3-latgen-faster[5.5.929~1-9bca2]:main():online2-wav-nnet3-latgen-faster.cc:296) Decoded utterance test_1978_recreatie_1656
LOG (lattice-to-ctm-conf[5.5.929~1-9bca2]:main():lattice-to-ctm-conf.cc:175) For utterance test_1978_recreatie_1656, Bayes Risk 4.06451, avg. confidence per-word 0.636305
- UTT (1): test_1978_recreatie_1656.wav, time: 1 seconds
- UTT (2): test_1978_recreatie_1657.wav
lattice-to-ctm-conf ark:- output/spk001_test_1978_recreatie_1657_1bestsym.ctm
online2-wav-nnet3-latgen-faster --online=false --do-endpointing=false --frame-subsampling-factor=3 --config=exp/tdnn1a_sp_bi_online/conf/online.conf --max-active=7000 --beam=15.0 --lattice-beam=6.0 --acoustic-scale=1.0 --word-symbol-table=exp/tdnn1a_sp_bi_online/graph_s/words.txt exp/tdnn1a_sp_bi_online/final.mdl exp/tdnn1a_sp_bi_online/graph_s/HCLG.fst 'ark:echo spk001 test_1978_recreatie_1657|' 'scp:echo test_1978_recreatie_1657 raw_data/spk001/test_1978_recreatie_1657.wav|' ark:-
test_1978_recreatie_1657 we kunnen dat wel zeggen
LOG (online2-wav-nnet3-latgen-faster[5.5.929~1-9bca2]:main():online2-wav-nnet3-latgen-faster.cc:296) Decoded utterance test_1978_recreatie_1657
LOG (lattice-to-ctm-conf[5.5.929~1-9bca2]:main():lattice-to-ctm-conf.cc:175) For utterance test_1978_recreatie_1657, Bayes Risk 0.654865, avg. confidence per-word 0.922916
- UTT (2): test_1978_recreatie_1657.wav, time: 0 seconds
In der Protokolldatei gibt es in jeder vierten Zeile von UTT(n) eine Transkription, die ich mithilfe des Linux-Befehls extrahieren möchte. Ich habe beispielsweise test_1978_recreatie_1657 we kunnen dat wel zeggen
früher test_1978_recreatie_1656 wij zullen <unk>
nach dem Grep-Befehl zum Extrahieren bestimmter Muster gesucht, aber es hat nicht funktioniert. Bitte geben Sie mir einen Vorschlag, wie ich das machen kann.
Antwort1
Ich glaube, Sie möchten, dass die vierte Zeile nach jedem Vorkommen von gedruckt wird UTT (n)
und der Zähler bei jedem Auftreten von auf 1 zurückgesetzt wird UTT (n)
:
awk '/UTT \([0-9]+\)/{line=0} {line++} line==4' file
Ausgabe
test_1978_recreatie_1656 wij zullen <unk>
test_1978_recreatie_1657 we kunnen dat wel zeggen
Einige Erklärungen. awk
hat Zeilen der Form pattern {action}
, wobei entweder pattern
oder action
optional sind (aber nicht beide). Jede Eingabezeile wird nacheinander auf alle Muster-/Aktionsanweisungen angewendet. Ein fehlendes Muster bedeutet, dass die Aktion für jede Eingabezeile ausgeführt wird. Ein fehlendes action
bedeutet, dass die Eingabezeile gedruckt wird.
/UTT \([0-9]+\)/ {line=0} # Match the pattern to set line=0
{line++} # Each line of input increments line
line==4 # When line==4, implicitly print the line
Antwort2
Für so etwas ist Awk möglicherweise einfacher als grep.
awk 'c && !--c; $2 == "UTT" {c=3}' file
Dies setzt einen Zähler, wenn eine „UTT“-Zeile übereinstimmt. Wenn der Zähler gesetzt ist, dekrementieren Sie die Variable und drucken Sie die Zeile, wenn der Zähler wieder auf Null zurückgeht. Sie können „UTT“-Zeilen auf verschiedene Weise abgleichen, z. B. mit einem regulären Ausdruck /^ - UTT/ {c=3}
oder einer Zeichenfolgenübereinstimmung index($0, " - UTT") == 1 {c=3}
. Die Bedingung $2 == "UTT"
ist erfüllt, wenn das zweite Feld die Zeichenfolge „UTT“ ist.
Antwort3
Verwendung von awk
:
awk '/UTT/{a=NR+3} NR==a' input
Wenn in diesem Befehl UTT
gefunden wird , a
wird auf gesetzt NR+3
. NR==a
Druckt die erforderliche Ausgabe.