Mai
09
2011
0

LaTeX Kommentare per sed entfernen

Möchte man in LaTeX-Dokumenten jegliche Kommentare entfernen, aber “\%” in den Dokumenten erhalten, so liefert sed die gewünschten Ergebnisse:

sed '/^\%/d;s/[:space:]*[^\\]\%.*//g;/^$/d' infile.tex > outfile.tex

Wenn man nicht möchte, dass Leerzeilen mit entfernt werden, so hilft folgender Befehl:

sed '/^\%/d;s/[:space:]*[^\\]\%.*//g' infile.tex > outfile.tex

Viel Spaß damit!

Beispiel:
% Kram, den man nicht mehr haben will
% wann wer wie wo was erstellt hat
%
% by H.Dickten 09.05.2011
\begin{document} % Dukument anfang
%
% Tolle Frage
Hier ist der wichtige Text. Wussten Sie, dass 10\% der
% ein weiterer Kommentar
Kommentare überflüssig % und noch einer
sind?

Und ein neuer Absatz.
%
% Tolle Antwort
Glaub ich nicht!
%
%
%Nun kommt noch der footer
\end{document}

wird zu

\begin{document}
Hier ist der wichtige Text. Wussten Sie, dass 10\% der
Kommentare überflüssig
sind?
Und ein neuer Absatz.
Glaub ich nicht!
\end{document}

Written by Hensing in: bissig,howto,Linux,Mac,Uni | Schlagwörter: , , , , , , ,
Jan
26
2011
0

[update] Python OptionParser: invalid integer value

Nachdem ich mich gewundert habe, warum bei mir jeweils zwei Kanäle meiner Daten (Kanal 08 und 09) nicht berechnet worden sind, habe ich die Jobs per Hand gestartet und stieß auf folgendes Phänomen:

Man nehme folgende minimal.py:


#!/usr/bin/python
# -*- coding: utf8 -*-
# minimal example by H.Dickten 2011

from optparse import OptionParser
parser = OptionParser()

parser.add_option("-c", "--channel1", type = int, dest="ch1",default = -1,
help = "channel 1")
parser.add_option("-C", "--channel2", type = int, dest="ch2",default = -1,
help = "channel 2")

(options, args) = parser.parse_args()
parser.destroy()
print "Channel1 = %d, Channel2 = %d. EXIT.\n" % (options.ch1, options.ch2)

und führe folgende test.sh aus:

#!/bin/bash
for i in 6 06 7 07 8 08 9 09 10
do
echo "i = $i"; python minimal.py -c 1 -C $i
done

Phänomen:
Wie man sieht werden alle Zahlen (mit und ohne vorstehenden Nullen) wunderbar als int geparsed. Nur die Zahl 08 und 09 werden nicht als 8 und 9 erkannt.

Abhilfe:
Man lässt die Zahlen als string parsen und castet diese später auf int via:

options.ch1 = int(options.ch1)

Gestestet mit Python 2.6.6 (debian squeeze) und Python 2.6.5 (Windows 7)

Update:
Python interpretiert “08″ als Oktalzahl (Quelle: docs.python.org). Demnach werden Hex- und Binärzahlen mit dem Präfix “0x” bzw. “0b” gekennzeichnet; Oktalzahlen jedoch nur mit der Ziffer “0″ anstelle der eindeutigen Kette “0o”. Dies sollte geändert werden ist wohl in Python 3 geändert worden, damit Zahlen nicht falsch interpretiert werden können (z.B. 072 (dezimal) != 072 (oktal) = 0o72 = 58 (dezimal)).

Nov
09
2010
0

Neues von der .zshrc Front

Vorhin habe ich eine kleine Funktion zum konvertieren von beliebig kodierter Textdateien in die UTF-8-Kodierung geschrieben. Einfach folgende Zeilen in die .zshrc übernehmen:


# Funktion zum konvertieren nach utf-8
conv2utf8() {
if [[ $OSTYPE == linux-gnu ]]; then
ENCIN=`file $@ -i | awk '{print $3}' | sed 's/charset=//g'`
else
ENCIN=`file $@ -I | awk '{print $3}' | sed 's/charset=//g'`
fi

ENCOUT='utf-8'
SUFFIXIN=${@##*.}
PREFIXIN=${@%.*}

OUT=$PREFIXIN"_utf8."$SUFFIXIN

print "Konvertiere $@ von $ENCIN nach $ENCOUT ..."
iconv -f $ENCIN -t $ENCOUT $@ > $OUT
}

Gebrauch: conv2utf8 Textdatei.txt.
Das Resultat ist anschließend in Textdatei_utf8.txt zu finden.

Viel Spaß damit!

Okt
12
2010
1

[HowTo] vpnc per skript via zsh starten

Als Alternative zum relativ dreckig programmierten Cisco VPN Client bietet sich unter Linux stets das Paket vpnc an. Dieses lässt sich unter Linux via

sudo aptitude install vpnc

mit einem Einzeiler installieren. sudo vpnc wird entweder interaktiv gestartet, wobei Gateway, Benutzername usw. abgefragt werden, oder aber per Konfigurationsdatei (/etc/vpnc/default.conf).

Der Inhalt einer solchen Datei sollte folgendermaßen aussehen:

IPSec gateway GATEWAY_IP
IPSec ID GROUP_ID
IpSec secret GROUP_PASSWORD
Xauth username USERNAME
Xauth password PASSWORD

Die Wörter in Versalien müssen natürlich durch die eigenen Einstellungen ersetzt werden. Der Nachteil dieser Methode liegt eindeutig darin, dass das Passwort im Klartext in der Konfigurationsdatei stehen muss.

Abhilfe schafft die “magische” z-shell, über die ich gerade ein schönes Buch lese:

Zunächst legt man eine Skript-Vorlage unter /etc/vpnc/vorlage.conf ab, in der alle Variablen bis auf das Passwort ersetzt worden sind. Das Passwort lässt sich bequem per stream editor sed ersetzen. Die Ausgabe von sed (mit dem ersetzten Passwort) kann man mit Hilfe der z-shell in eine temporäre Datei abgelegt werden, auf die vpnc zugreifen kann, und direkt nach Ausführen des Befehls wieder gelöscht wird:

#!/bin/zsh

PASS=`kdialog --password "Bitte VPN-Passwort eingeben!" 2>/dev/null`
sudo vpnc =(sed "s/PASSWORD/$PASS/g" /etc/vpnc/vorlage.conf)

Möchte man zudem, dass vpnc ohne Passwort als sudo ausgeführt werden kann, so bietet der Befehl sudo visudo Abhilfe. Das Ganze sollte dann so aussehen:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
Defaults env_reset

# Cmnd alias specification
Cmnd_Alias VPNC = /usr/sbin/vpnc, /usr/sbin/vpnc-connect, /usr/sbin/vpnc-disconnect

# User privilege specification
root ALL=(ALL) ALL
hensing ALL= ALL

hensing ALL=NOPASSWD: VPNC

Editor beenden und freuen. Viel Spaß damit!

Powered by WordPress | Aeros Theme | TheBuckmaker.com | Original background by Dino Abatzidis | modified by H.Dickten