Script: Lösche Zeile

F

flugopa

Hallo,

ich würde gern folgendes umsetzen:

durchsuche die Datei /etc/hosts und lösche die Zeilen die am Anfang ein
#
::
oder
leere Zeilen
besitzen.

Wie sollte die sid- oder grep- Optionen aussehen?
Ich wäre auch mit 3 einzelnen sid glücklich.
 
Versuch's mal so:

Code:
  #!/bin/bash

  grep -v '#' /etc/hosts > /etc/H2
  grep -v '::' /etc/H2 > /etc/H3
  mv /etc/H3 /etc/hosts
  rm /etc/H2
 
Zuletzt bearbeitet:
Hallo Pik-9,

danke für die schnelle Reaktion.
Meine Version durch Deine Anregung:
Code:
grep -v '#' /etc/hosts | grep -v '::' >hosts.neu
mv hosts.neu /etc/hosts
Eine Frage bleibt noch.
Wie entferne ich die Leerzeilen?
Mit sid ?
 
Probiers mal so:
Code:
sed -e '/^#/d' -e '/^::/d' -e '/^[[:space:]]*$/d' /etc/hosts > /etc/hosts.new
mv /etc/hosts.new /etc/hosts
 
gelöst

Hallo Tblue,

aus Deiner Anregung habe ich folgendes gebastelt:
Code:
sed -i -e '/^#/d' -e '/^::/d' -e '/^[[:space:]]*$/d' /etc/hosts

Danke.
 
Die Option -i versteht nur das GNU-sed und ich wollte auf Nummer sicher gehen (POSIX-sed). :-)
 
Linux-Distributionen nicht unbedingt, die liefern meistens die GNU Werkzeuge mit. Aber verschiedene BSD oder andere Unix-basierte Systeme (Solaris oder sonstwas), könnten andere Tools dabei haben.
 
Hiesst ja nicht umsonst GNU/Linux auch wenns die meisten nicht sagen :-) Das Problem ist wirklich, dass hier allzu oft solche Fragen gestellt werden und dann in der Regel von den Leuten mit nicht GNU-Werkzeugen (Unix) dieses Detail nicht erwähnt wird, da ist es dann sicherer eine universale(re) Lösung zu beschreiben.
 

Ähnliche Themen

chown Befehl in einem Script

Verzeichnis mit 1200 Dateien auf Verweise in Textdateien checken

Hilfe für ein shell script

Duplikate aus Liste löschen

Frage zu Bash Script mit Grep Ausgabe

Zurück
Oben