| Home Profil Fun |
#36 Linux 28.08.2008
Bashskripte zur Bearbeitung von TextdateienDie folgenden kleinen Skripte habe ich zur Bearbeitung von vielen Textdateien geschrieben. Manche Operationen lassen sich nur noch umständlich mit einer einzige Kommandozeile ausführen. Die Bashskripte machen nicht mehr als Text einfügen, oder Dateien verschmelzen usw. und arbeiten mit allen Dateien im Ordner "files"; Den Inhalt einer anderen Textdatei am Anfang einfügen.
#!/bin/bash
for i in ./files/*
do
cat sampletext.txt > ${i}_tmp
cat $i >> ${i}_tmp
mv ${i}_tmp $i
done
exit
Eine bestimmte Zeile mit Hilfe von grep finden und deren Zeilennummer extrahieren. Anschließend alle Zeilen ab dieser Zeile(eingeschlossen) bis Zeile 2000 löschen. #!/bin/bash for i in ./files/* do LINENUMBER=`grep -n "some text" $i | sed 's/:.*//'` sed -i -e "$LINENUMBER,2000d" $i done exit Den Inhalt des HTML-Tags <h1> extrahieren und damit den Inhalt des Tags <title> ersetzen. #!/bin/bash for i in ./files/* do H1=`grep "<h1>" $i | sed -e 's/^.*<h1>//' | sed -e 's/<\/h1.*$//'` sed -i -e "s/<title>.*<\/title>/<title>$H1<\/title>/" $i done exit Die ersten 20 Zeilen in eine temporäre Datei schreiben. Dann eine beliebige Zeile am Ende der temporären Datei anfügen und danach alles ab Zeile 22(eingeschlossen) der Originaldatei ebenfalls anfügen. Zuletzt wird die Originaldatei mit der temporären Datei überschrieben.
#!/bin/bash
for i in ./files/*
do
head -n20 $i > ${i}_tmp
echo -e "some text" >> ${i}_tmp
tail -n +22 $i >> ${i}_tmp
mv ${i}_tmp $i
done
exit
Sehr hilfreich bei solchen Operationen ist auch das Kommando "tac". Es dreht die Reihenfolge der Zeilen einer Datei um, sodass die Datei mit der letzten Zeile beginnt. |