awk schneidet Datei ab bestimmter Größe ab
Hallo Liste! Ich versuche gerade, in html-dateien per awk den DOCTYPE-header einzufügen - das Skript dth.awk ist folgendes #Doctype-Header einfügen, falls nicht vorhanden... { file = FILENAME if(NR==1 && !/DOCTYPE/) { print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
FILENAME } print $0 > FILENAME }
Aufgerufen wird es mit awk -f dth.awk `find -name '*'.html`. Leider werden die Dateien auf 4.0kb begrenzt - auch wenn die ürsprünglichen z.T. größer sind. Weiß jemand Rat? Danke im Voraus! Gruß, Björn Beckmann
Hallo, Am Dienstag, 30. Juli 2002 15:13 schrieb Björn Beckmann:
Ich versuche gerade, in html-dateien per awk den DOCTYPE-header einzufügen - das Skript dth.awk ist folgendes
#Doctype-Header einfügen, falls nicht vorhanden... { [...] print $0 > FILENAME }
Aufgerufen wird es mit awk -f dth.awk `find -name '*'.html`. Leider werden die Dateien auf 4.0kb begrenzt - auch wenn die ürsprünglichen z.T. größer sind. Weiß jemand Rat?
Du schreibst in eine geöffnete Datei, aus der gerade
gelesen wird. Habe ich auch schon probiert, das geht
nicht gut. Nach dem Schreibvorgang wird die Dateilänge
neu gesetzt. Was da genau passiert weiß ich auch nicht,
aber alle folgenden Blöcke werden einfach >>vergessen<<.
Am besten verwendest Du eine Zwischendatei
`xxx.html.tmp' oder `xxx.html~' oder so.
Gruß
Bertram
--
Bertram Scharpf
Bertram Scharpf wrote:
Am Dienstag, 30. Juli 2002 15:13 schrieb Björn Beckmann:
Ich versuche gerade, in html-dateien per awk den DOCTYPE-header einzufügen - das Skript dth.awk ist folgendes
#Doctype-Header einfügen, falls nicht vorhanden... {
[...]
print $0 > FILENAME }
Aufgerufen wird es mit awk -f dth.awk `find -name '*'.html`. Leider werden die Dateien auf 4.0kb begrenzt - auch wenn die ürsprünglichen z.T. größer sind. Weiß jemand Rat?
Du schreibst in eine geöffnete Datei, aus der gerade gelesen wird. Habe ich auch schon probiert, das geht nicht gut. Nach dem Schreibvorgang wird die Dateilänge neu gesetzt. Was da genau passiert weiß ich auch nicht, aber alle folgenden Blöcke werden einfach >>vergessen<<.
Am besten verwendest Du eine Zwischendatei `xxx.html.tmp' oder `xxx.html~' oder so.
Danke für den Tip - aber wie bekomme ich es hin, daß dann anschließend alles in den ürsprünglichen Dateien steht? Gruß, Björn Beckmann
Hallo, Am Mittwoch, 31. Juli 2002 00:12 schrieb Björn Beckmann:
Bertram Scharpf wrote:
Am besten verwendest Du eine Zwischendatei `xxx.html.tmp' oder `xxx.html~' oder so.
Danke für den Tip - aber wie bekomme ich es hin, daß dann anschließend alles in den ürsprünglichen Dateien steht?
Ganz einfach -- mit `cp', also zum Beispiel:
$ sed '/\$/EUR/' myfile.txt >myfile.txt.tmp
$ cp myfile.txt.tmp myfile.txt
oder mit `mv':
$ sed '/$/EUR/' myfile.txt | cat >myfile.txt.tmp # *g*
$ mv myfile.txt.tmp myfile.txt
Gruß
Bertram
--
Bertram Scharpf
Am Mittwoch, 31. Juli 2002 00:12 schrieb Björn Beckmann:
Bertram Scharpf wrote:
Am Dienstag, 30. Juli 2002 15:13 schrieb Björn Beckmann:
Ich versuche gerade, in html-dateien per awk den DOCTYPE-header einzufügen - das Skript dth.awk ist folgendes
#Doctype-Header einfügen, falls nicht vorhanden... {
[...]
print $0 > FILENAME }
Aufgerufen wird es mit awk -f dth.awk `find -name '*'.html`. Leider werden die Dateien auf 4.0kb begrenzt - auch wenn die ürsprünglichen z.T. größer sind. Weiß jemand Rat?
Du schreibst in eine geöffnete Datei, aus der gerade gelesen wird. Habe ich auch schon probiert, das geht nicht gut. Nach dem Schreibvorgang wird die Dateilänge neu gesetzt. Was da genau passiert weiß ich auch nicht, aber alle folgenden Blöcke werden einfach >>vergessen<<.
Am besten verwendest Du eine Zwischendatei `xxx.html.tmp' oder `xxx.html~' oder so.
Danke für den Tip - aber wie bekomme ich es hin, daß dann anschließend alles in den ürsprünglichen Dateien steht?
Gruß, Björn Beckmann
Schreib ein zusätzliches script: insertheader.awk: #!/bin/awk { if(NR==1 && !/DOCTYPE/) { print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n" } print $0 } insertheader.sh: #!/ bin/bash awk -f insertheader.awk <$1 >$1.temp mv $1.temp $1 Und das ganze dann aufgerufen mit find . -name '*.html' -exec insertheader.sh {} \; Grüße Alex -- Alexander Puchmayr Systemadministrator for Theoretical Physics University Linz, Austria e-mail: alexander.puchmayr@jku.at Altenbergerstrasse 69 phone: +43/732/2468-8633 A-4040 Linz-Auhof FAX: +43/732/2468-8585
On Tue, 2002-07-30 at 15:13, Björn Beckmann wrote:
Hallo Liste!
Ich versuche gerade, in html-dateien per awk den DOCTYPE-header einzufügen - das Skript dth.awk ist folgendes
#Doctype-Header einfügen, falls nicht vorhanden... { file = FILENAME if(NR==1 && !/DOCTYPE/) { print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
FILENAME } print $0 > FILENAME }
Mit awk kenne ich mich nicht aus, aber nimm doch einen Einzeiler: find . -type f -name "*.html" -exec perl -p -i.bak -e 's/altes\sWort/neues\sWort/g' {} \; (Natuerlich OHNE Zeilenumbruch auf der Shell :)) -- Mit freundlichen Grüßen ______________________ InnoSoft GmbH Marcel Schmedes E-Mail : sm@cemag.de Tel.: ++49-5151-989977 ______________________
participants (4)
-
Alexander Puchmayr
-
Bertram Scharpf
-
Björn Beckmann
-
Marcel Schmedes