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

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

Datei 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 Datei doppelt nebeneinander anzeigen:

 paste datei.txt datei.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 Ausrufezeichen an das Ende jeder Zeile einer Datei anfügen:

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):

getfilename.sh
#! /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;…)

benutzer.txt
Einstein;Albert;Physiker;
Hahn;Otto;Physiker;
Planck;Max;Physiker;
benutzer.awk
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


zurück