Zeige in einer Konfigurationsdatei keine Komentare und leeren Zeilen an:
grep -v '^#' /etc/turnserver.conf | awk 'NF'
In allen TXT-Dateien eines Verzeichnisses „ALT“ gegen „NEU“ tauschen:
sed -i"" 's|ALT|NEU|g' *.txt
oder rpl (sogar rekursiv) benutzen:
rpl -Rwd -x'.txt' 'ALT' 'NEU' verzeichnis/
Ersetzung mit rpl nur simulieren:
rpl -Rsdv -x'.txt' 'ALT' 'NEU'
In xcache.ini Datei den beliebigen Wert von xcache.admin.enable_auth
gegen ein Off
ersetzen:
sed -i -e 's/^\(xcache\.admin\.enable_auth[ ]*=\).*/\1 Off/' /etc/php5/apache2/conf.d/xcache.ini
Lösche eine Zeile mit Inhalt:„127.0.0.2“ aus Datei /etc/hosts
:
sed -i -e '/127.0.0.2/d' /etc/hosts
Lösche die Zeilen 1-14000 aus einer Datei:
sed -i '1,14000'd datei.txt
Standardshell in SUSE ändern:
sed -i -e 's|/bin/bash|/bin/tcsh|g' /etc/default/useradd
Ersetze in einer Variablen r
den String „ichar
“ durch „olan
“
r=Richard echo ${r/ichar/olan} ~>Roland
Dateizeilen rückwärts anzeigen,Letzte Zeile zuerst:
tac datei.txt
Datei buchstabenweise rückwärts anzeigen:
rev datei.txt
Spalten 1 und 3 ausschneiden:
cut -f 1,3 datei.txt
Spalten ohne cut ermitteln(schneller):
buf="buf1 buf2 buf3 der doofe rest" #oder buf=`cat datei.txt` read b1 b2 b3 rest<<<$buf echo b2 && echo rest
Zeige die letzten drei Zeichen einer jeden Zeile an:
grep -o '...$'
oder
cat datei.txt | tail -c 3
Zeige alle Zeilen an, in der nicht an der zehnten Stelle ein „-“ steht:
grep -v '^.........-' datei.txt
Zeige alle Zeilen an, deren Länge kleiner 5 beträgt:
sed '/^.\{5\}/d' datei.txt
Inhalt einer oder meherer Dateien doppelt nebeneinander anzeigen:
paste datei1.txt datei2.txt
kommaseparierte Spalten ausschneiden:
cut -d, -f 1-3 datei.txt
Feld 6 aus der /etc/passwd ausschneiden(Trenner ist der doppelpunkt):
cut -d : -f 6 /etc/passwd
Lösche die ersten 6 Zeichen jeder Zeile:
cut -c 6- myfile.txt
Zeilennummer voransetzen:
nl datei
nl -s ".Zeile " datei.txt
Text am Anfang jeder Zeile einfügen:
awk '{print "echo "$0}' datei.txt
Text am Ende jeder Zeile einfügen:
awk '{print $0"Ende"}' datei.txt
Ersetze „alt“ mit „neu“ in Zeilen die „meintext“ enthalten:
awk '/meintext/{gsub(/alt/, "neu")}; 1' datei.txt
Ersetze „alt“ mit „neu“ in Zeilen die NICHT „meintext“ enthalten:
awk '!/meintext/{gsub(/alt/, "neu")}; 1' datei.txt
Zeige nur Zeilen an die länger als 255 Zeichen lang sind:
awk 'length > 255'
Zeige nur Zeilen an die länger als 255 Zeichen lang sind aber auch Leerzeichen enthalten können:
cat datei.txt | awk 'length>255 {gsub(/^ +/,""); print $0, length}
ersten Buchstaben löschen wenn es ein großes R ist:
r=Richard echo ${r#R} ~>ichard
letzten Buchstaben löschen wenn es ein kleines d ist:
r=Richard echo ${r%d} ~>Richar
einen Buchstaben n immer durch l ersetzen:
tr n l < datei.txt
oder
r=Anna echo ${r//n/l} ~>Alla
ein Anführungszeichen an das Ende jeder Zeile einer Datei anfügen:
sed -i 's/$/\"/' datei.txt
das Anführungszeichen am Ende einer Datei löschen:
cat datei.txt | sed -e 's/\"$//g' >>neueDatei.txt
eine Raute an den Anfang jeder Zeile einer Datei setzen:
sed -i 's/^/#/' datei.txt
ein Komma durch ein NewLine ersetzen:
id | tr , '\n'
Großbuchstaben in Kleinbuchstaben ersetzen:
cat /var/log/Messages | tr A-Z a-z
oder
dd if=/etc/fstab of=upper.txt conv=ucase
oder
r=RichArd echo ${r,,} ~>richard
Kleinbuchstaben in Großbuchstaben umwandeln:
r=RichArd echo ${r^^} ~>RICHARD
oder
dd if=/etc/fstab of=upper.txt conv=lcase
Buchstaben b bis d löschen:
echo "abcdef"| tr -d b-d
alle Zahlen löschen:
tr -d 0-9 <datei.txt
alle Buchstaben löschen:
echo "abcdefg123" | tr '[:alpha:]' -
alle Wiederholungen löschen:
echo "XXXXXXXXXX" | tr --squeeze-repeats 'X'
alle Tabs löschen:
tr -d '[:blank:]' test3.txt
alle nichtdruckbaren Zeichen ausfiltern:
cat datei | tr -cd '[:print:]' | cat
alle nichtdruckbaren und Leerzeichen herausfiltern:
cat datei | tr -cd '[:print:][:space]' | cat
ROT13 verschlüsselung:
cat /var/log/messages | tr 'a-zA-Z' 'n-za.mN-ZA-M'
CarriageReturn (CR) aus einer aus Windows übernommenen Textdatei löschen:
sed -i 's/\x0D$//' DATEI
Zeige mir die fünfte Zeile der Datei datei.txt
an:
sed -n '5p' datei.txt
Zeige mir nicht die erste Zeile der Datei datei.txt
an:
sed '1,1d' datei.txt
Zeige mir nicht die ersten zwei Zeilen der Datei datei.txt
an:
sed '1,2d' datei.txt
Zeige mir nicht die zweite Zeile der Datei datei.txt
an:
sed '2,1d' datei.txt
Zeige mir nicht die zweite bis vierte Zeile der Datei datei.txt
an:
sed '2,4d' datei.txt
Dateien umkodieren:
recode UTF8..latin1 datei.txt
Inhalt einer Textdatei zeileweise auslesen und was damit machen:
for i in `cat datei.txt`;do echo $i $i %'\n';done > neuedatei.txt
einen Dateinamen zerlegen(Vorsicht bei Namen wie datei.x.y.txt):
#! /bin/bash in="/home/ich/datei.mpg" base=`basename $in` datei=`echo $base | cut -d '.' -f1` #datei=`basename ${i%.*}` ext=`echo $base | cut -d '.' -f2` #ext=`basename ${i##*.}` #Großschreibung in Kleinschreibung umwandeln uext=`echo $ext | tr [:upper:] [:lower:]` echo $base echo $datei echo $ext echo $uext
nur den Dateinamen(datei.txt) anzeigen:
dt=/mein/tiefes/Verzeichnis/mit/der/datei.txt echo ${dt##*/}
eine Datei in 10MB große Stücke aufteilen. Es werden Dateien xaa, xab… erzeugt:
split -b 10000000 grosseDatei.dbf
die Dateien wieder zusammenfügen:
cat x* > grosseDatei.dbf
Mit dd
aus den zwei zuvor erstellten Dateien eine neue Diskette schreiben (Selbe Funktion wie vorhergehender Befehl):
dd if=xaa of=grosseDatei.dbf dd if=xab of=grosseDatei.dbf bs=1 seek=700000
Ein mit dd
erstelltes und mit gzip
gepacktes Image ueber ssh
auf einem anderen Rechner (mysrv) speichern.(lahm)
dd if=/dev/sda1 | gzip -9 | ssh ich@mysrv "cd /tmp ; cat > sda1.img.gz"
Eine unsichtbare Datei erstellen, wiederfinden und löschen:
echo testinhalt >" " find . -name '[ ]' -print -exec cat {} \; #Ausgabe: ./ testinhalt #löschen: rm " " # von Windows aus war die Datei in einer Sambafreigabe jedoch als "_2X68Q~7" zu erkennen.
Zwei Sachen mit find nichtcasesensitiv finden:
find /meindir -iname "index.html" -o -iname "*.gif" -print
Bearbeiten einer INI-Datei(wfclinet.ini) in opensuse:
Eintrag „AllowAudioInput“ in WFClient mit „True“ definieren.
zypper in -y crudini crudini --set /opt/Citrix/ICAClient/config/wfclient.ini WFClient AllowAudioInput True
zwei Verzeichnisse auf Differenzen vergleichen:
diff -rq /opt/CitrixORG /opt/Citrix
welche Dateien wurden in /usr
in den letzten 10 Minuten verändert?
find /usr/ -mmin -10 -ls
in der Datei /etc/samba/smb.conf
den Zweig [users] komplett löschen:
sed -i '/\[users\]/,/\[/{//!d}' /etc/samba/smb.conf sed -i -e '/\[users]/d' /etc/samba/smb.conf
in der Datei /etc/pam.d/common-account
beim allen Vorkommen von „^account“
eine Zeile mit account requisite pam_time.so
vorher einfügen:
sed -i 's/^account.*/account requisite pam_time.so\n&/' /etc/pam.d/common-account
in der Datei /etc/pam.d/common-account
beim ersten Vorkommen von „^account“
eine Zeile mit account requisite pam_time.so
vorher einfügen:
awk -i inplace -v var='account\trequisite\tpam_time.so' 'BEGIN { found = 0; ins = var } /^account/ { if( ! found ) {print var; found = 1; }} { print }' /etc/pam.d/common-account
in einer Datei benutzer.txt
aus dem Namen und dem Vornamen einen account machen(aus Einstein;Albert;Physiker; wird AEinstein;Einstein;…)
Einstein;Albert;Physiker; Hahn;Otto;Physiker; Planck;Max;Physiker;
BEGIN {} /\w+\;\w+/ { split( $0, tok, /;/ ); printf( "%s%s;%s\n", substr( tok[2], 0, 1 ), tok[1], $0 ); } END {}
awk -f benutzer.awk benutzer.txt