Nicht imstande, Codes in einer Datei zu vielen Dateien in AWK / Python zu trennen
Frage
Ich muss verschiedene Codes in einer Datei zu viele Dateien setzen. Die Datei wird apparantly von AWK Erschaffer auf ihrer Homepage geteilt. Die Datei ist auch hier für die einfache Nutzung.
Mein Versuch, das Problem
Ich kann die Linien bekommen, wo jeder Code von
lokalisierenawk '{ print $1 }'
Allerdings habe ich kein Know-how
- die genauen Zeilennummern zu erhalten, damit ich sie verwenden kann
- sammeln Codes zwischen den spezifischen Linien, so dass das erste Wort jeder Zeile wird ignoriert
- diese separaten Codes in neue Dateien zu setzen, die durch das erste Wort in der Zeile benannt
Ich bin sicher, dass das Problem auch von AWK und mit Python gelöst werden kann. Vielleicht brauchen wir sie gemeinsam nutzen.
[Bearbeiten] nach der ersten Antwort
Ich erhalte die folgende Fehlermeldung, wenn ich versuche, es auszuführen, mit awk
$awk awkcode.txt
awk: syntax error at source line 1
context is
>>> awkcode <<< .txt
awk: bailing out at source line 1
Lösung
Haben Sie versucht, zu:
- Erstellen Sie eine Datei unbundle.awk mit folgendem Inhalt:
1 $ = prev {schließen (i!); prev = $ 1} {Print substr ($ 0, Index ($ 0, "„) + 1)> $ 1}
-
Entfernen Sie die folgenden Zeilen die Datei awkcode.txt bilden:
# entflechten - auspacken ein Bündel in einzelne Dateien
1 $ = prev {schließen (i!); prev = $ 1} {Print substr ($ 0, Index ($ 0, "„) + 1)> $ 1}
- Führen Sie den folgenden Befehl ein:
awk -f unbundle.awk awkcode.txt
Andere Tipps
Sind Sie versuchen, eine Datei in diesem Format zu entpacken? Es ist eine Art von Shell-Archiv. Weitere Informationen finden Sie unter http://en.wikipedia.org/wiki/Shar
Wenn Sie das Programm mit awk ausführen, wird awk all diese Dateien erstellen. Sie brauchen nicht zu schreiben oder umschreiben viel. Sie können einfach, dass awk-Programm ausführen, und es sollte immer noch funktionieren.
Als erstes sehen Sie die Datei in "plain" Format. http://dpaste.com/12282/plain/
Zweitens speichern die Ebene Version der Datei als ‚awkcode.shar‘
Drittens, ich glaube, Sie den folgenden Befehl verwenden müssen.
awk -f awkcode.shar
Wenn Sie es mit einem Python-Programm ersetzen möchten, wäre es so etwas wie dieses.
import urllib2, sys
data= urllib2.urlopen( "http://dpaste.com/12282/plain/" )
currName, currFile = None, sys.stdout
for line in data:
fileName, _, text= line.strip().partition(' ')
if fileName == currName:
currFile.write(line+"\n")
else:
if currFile is not None:
currFile.close()
currName= fileName
currFile= open( currName, "w" )
if currFile is not None:
currFile.close()
Awk Datei awkcode.txt sollte keine Leerzeile enthalten. Sollte eine Leerzeile angetroffen wird, schlägt das awk-Programm. Es gibt keine Fehlerprüfung Leerzeile in dem Code heraus zu filtern. Dies konnte ich nach einigen Tagen des Kampfes erfahren.