Mein Problem ist, ich muss die Zeilennummer aus dem Ende einer Reihe von Textdateien Namen mit einer Größe größer als 0 extrahieren. Sobald ich die Liste habe von Zeilennummern muss ich die Zeilen aus der Master-Textdatei extrahieren.Zeilen aus mehreren Textdateinamen extrahieren und dann diese Zeilen aus einer Textdatei ziehen - Linux
Ich habe herausgefunden, wie man den ersten Schritt mit dem folgenden Befehl, der alle Dateien mit der .sh.e mit einer Größe von> 0 Bytes findet, Es zieht dann die letzten paar Zeichen der JobID und eine Sed Befehlsleisten aus den führenden 7 Zeichen (das kann wahrscheinlich auch etwas eleganter gemacht werden), was uns dann eine schöne Liste von Zeilennummern gibt.
Dateiname Beispiele:
Job_2017-09-25-08-50-28-ahill.sh.e1191.92
Job_2017-09-25-08-50-28-ahill.sh.e1191.102
Job_2017-09-25-08-50-28-ahill.sh.e1191.252
Job_2017-09-25-08-50-28-ahill.sh.e1191.301
find . -name "*.sh.e*" -type f -size +0c | grep -E -o ".e1191.{0,10}" | sed 's/^.\{7\}//'
92
102
252
301
Ich brauche dann die Zeilen aus einem Text-Datei zu extrahieren, die mir die ursprünglichen Speicherort der Datei meiner Jobs erzählt.
Ich habe Probleme, diese an sed oder awk zu übergeben, um das Hauptprotokoll zu analysieren. Ich habe folgendes versucht:
find . -name "*.sh.e*" -type f -size +0c | grep -E -o ".e1191.{0,10}" | awk (NR=sed s/^.\{7\}//) ../temp/files.2017-09-26.txt
find . -name "*.sh.e*" -type f -size +0c | grep -E -o ".e1191.{0,10}" | sed -n "$(sed 's/^.\{7\}//')p" ../temp/files.2017-09-26.txt
find . -name "*.sh.e*" -type f -size +0c | grep -E -o ".e1191.{0,10}" | awk "NR==$(sed 's/^.\{7\}//')" ../temp/files.2017-09-26.txt
Alle scheinen zu versagen oder geben einen Ausdruck Fehler. Ich kann es in Excel für jetzt tun, aber möchte dies über die Befehlszeile tun, wie ich es oft tun muss.
Irgendeine Idee?
Dank
dieser Satz „Ich muss dann die Zeilen aus einem Text-Datei extrahieren, die mir die ursprünglichen Speicherort der Datei meiner Jobs erzählt.“, Ist unklar. Was sollte das Endergebnis sein? – RomanPerekhrest
Das Endergebnis ist eine Liste von Zeichenfolgen in Zeile (n) X (die wir vom ersten Befehl erhalten haben) aus der Datei ../temp/files.2017-09-26.txt. Was ist eine große Liste von Pfaden zu den ursprünglichen WAV-Dateien. –
also jedes Mal sollte das Skript die Datei '/ temp/files.2017-09-26.txt' für die Nummern' 92', '102' usw. suchen und die passenden Zeilen mit diesen Zahlen ausgeben? – RomanPerekhrest