Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Linux sh scripts - SED

Frage Linux

Mitglied: hausens

hausens (Level 1) - Jetzt verbinden

26.07.2013, aktualisiert 02.08.2013, 2208 Aufrufe, 9 Kommentare, 2 Danke

Hallo,

Ich möchte per SED den Text einer Datei löschen. wenn ich dies auf der cli mache funktioniert es.
01.
sed -e 's\test\\g' hosts.txt
Da ich das ganze aber automatisieren möchte, wird die eingabe die gemacht wird in eine Variable gespeichert. Dann soll die Variable (sprich das was in der var deffiniert wurde) aus dem .txt File gelöscht werden.
Nur funktioniert das nicht.

01.
hostname=test 
02.
sed -e "s\'$hostname'\''\g" hosts.txt;
Wenn man es im "Klartext" löschen möchte funktioniert es. So tut sich nichts.
Ich verwende einen Ubuntu 13.04 Server

fg

Hausens
Mitglied: Lochkartenstanzer
26.07.2013 um 09:10 Uhr
Moin,

Waum nimmst Du \ statt / oder :. \ hat Sonderbedeutungen und man muß mit der Anzahl der "Escapes" imerm gut aufpassen, welche Schicht zum Schluß die \ bekommen soll.

Außerdem nimmst Du in einem Fall double-quoteds und im anderen Fall single-quotes zum Einklammern des Ausdrucks. Auch hier hat das single-quote eine andere bedeutung als das double-quote! und in verbindung mit dem bakslash gibt das dann ganz andere Effekte,

Richtig sollte da also z.B. stehen:

sed -e "s/test//g"
und

 sed -e "s/'$hostname'//g" hosts.txt
Gruß

lks

PS: Setz die Code-Tags in spitze Klammern, dann funktioniert das auch.
Bitte warten ..
Mitglied: Lochkartenstanzer
26.07.2013, aktualisiert um 09:12 Uhr
Nachtrag:

Und die Anzahl der Quotes ist auch "unmatched". Zähl mal durch.

lks
Bitte warten ..
Mitglied: hausens
26.07.2013, aktualisiert 02.08.2013
Vielen dank für die schnelle Andwort.
Ich bin nicht so betagt mit shell scripts.. sollte ich mal ändern

das was ich oben Falsch geschrieben habe kommt dh das ich es per hand nochmals eingegeben habe mir ist klar das ich 2x " brauche
Ich hab das nun mit der Variable versucht und es geht noch immer nicht...

01.
hostname=test 
02.
sed -e "s/'$hostname'//g" hosts.txt
Ausgabe hosts.txt:
test-srv
test

was mach ich noch Falsch?

fg

Hausens
Bitte warten ..
Mitglied: hausens
26.07.2013, aktualisiert 02.08.2013
Ach und weiters sollte das Script nur nach GENAU der Zeichenkette suchen. dachte da an soetwas:

01.
sed -e "s/'^$hostname$'/''/g" hosts.txt 
kommt das hin? was sagt ihr?
Bitte warten ..
Mitglied: jodalein
26.07.2013, aktualisiert 29.07.2013
Hi,
1. du brauchst nicht um bedingt Quotes es reicht wenn alles richtig escaped ist.

2. willst du den eigenen Rechnernamen aus der Datei entfernen?
wenn ja nimm $HOSTNAME = localhost.domain.de (wenn es ein Domain Rechner ist)

3. du musst ein Leerzeichen mit \ escpaen
sed -s /XYZ/\ /g datei


Das geht so nicht:
sed -e "s/'^$hostname$'/''/g" hosts.txt

Das geht:
variable=pc1
sed -i s/$variable/\ /g hosts.txt = entfernt nur den Namen, aber falls dort noch IPs stehen bleiben die erhalten, eher schlecht


Ich vermute jetzt einfach mal es geht um die normale /etc/hosts

dann würde ich es mir einfacher machen um direkt die ganze Zeile zu löschen:
cat hosts.txt |grep -v $variable > tmp.datei && mv tmp.datei hosts.txt


wenn es mehrere Einträge sind die gelöscht werden sollen ist sed und eine schleife die bessere Option.


jodalein
Bitte warten ..
Mitglied: Lochkartenstanzer
26.07.2013 um 13:10 Uhr
Zitat von hausens:
sed -e "s/'$hostname'//g" hosts.txt
was mach ich noch Falsch?

Die Single-Quotes. weglassen. Die sorgen dafür, daß Du nicht den Variableninhalt von hostname, sondern den String "$hostname" suchst. Sorry, habe übersehen, daß Du den Inhalt der Variable meintest und nicht die Variable selbst.

lks
Bitte warten ..
Mitglied: hausens
29.07.2013, aktualisiert 02.08.2013
Morgen,

nein es geht nicht um die /etc/hosts Datei.
es soll nur der Text bzw die ganze Zeile gelöscht werden. Hab aber nun die lösung gefunden:

01.
sed -i "s/^$hostname$//g" hosts.txt 
aber die grep -v Version gefällt mir um einiges besser, danke für den Tipp


fg

Hausens
Bitte warten ..
Mitglied: Lochkartenstanzer
29.07.2013 um 09:54 Uhr
Zitat von hausens:
aber die grep -v Version gefällt mir um einiges besser, danke für den Tipp

Sofern Du die Zeile ganz löschen willst, ist grep das Mittel der Wahl. Sollte aber nur der Zeileninhalt gelöscht werden und die Zeile als Leerzeile erhalten bleiben, ist sed das Bessere.

lks
Bitte warten ..
Mitglied: Lochkartenstanzer
29.07.2013, aktualisiert um 09:58 Uhr
Hallo hausens,

wie ich fürher schon geschrieben hatte, könntest Du noch den Beitrag editieren, daß die Code-Tags in spitzen Klammern sind und auch Deine Kommentare mit Code in code-Tags einklammern und dadurch besser lesbar werden. Erleichtert anderen das Lesen des Beitrags.

lks
Bitte warten ..
Ähnliche Inhalte
Linux
Sed unter Linux: text enthält slashes und muss ersetzt werden
gelöst Frage von waldi18Linux3 Kommentare

Hi zusammen, habe ein Problem: dieser Text in einer xml Datei: /opt/ludwig/prod/hanns/Exports/ muss durch einen wie /binaries/1 ersetzt warden. ...

Linux Tools
Linux: SED: String mit zwei Pattern exportieren
gelöst Frage von Jens4everLinux Tools5 Kommentare

Moin zusammen, ich habe mehrere Varianten ergooglet und ausprobiert, bin aber zu blöde Wo ist mein Fehler? Ich möchte ...

Batch & Shell
For Schleife in einer .sh Datei
Frage von CrystalFlakeBatch & Shell4 Kommentare

Hallo Com, ich habe die Aufgabe bekommen in einer .sh File die beim Kuden ausgeführt werden soll, eine for ...

PHP
Via Webserver sh triggern?
Frage von carl7nPHP2 Kommentare

Hallo, ich habe unter Debian den Apache2 Webserver installiert. Wenn auf diesem nun eine bestimmte Datei (php, html, cgi ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 4 StundenWindows 10

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 6 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 20 StundenInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 23 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte15 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...