sed befehl, ein symbol aus einer zeile

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
dfo231
Beiträge: 7
Registriert: 13.02.2016 21:09:05

sed befehl, ein symbol aus einer zeile

Beitrag von dfo231 » 23.02.2017 10:41:45

Hallo Leute

Ich versuche mich an ein Script das mit in einer config Datei das # Symbol am Anfang löscht, den Rest in der Zeile aber stehen Läst.

beispiel
# [Archiv]
# comment = freigabe

in
[Archiv]
comment = freigabe

Es ist zu sehen das es für Samba ist, ich habe schon durch probieren heraus bekommen:
sed -n '/\[Archiv].*/, +2p' smb.conf

Diese Ausgabe erfolgt:
# [Archiv]
# comment = freigabe

meine Idee war nun hinten noch 's/\^#//' zu setzen, damit das # durch eine Leerzeichen ersetzt wird.
Leider bekomme ich eine Fehlermeldung und weiß nun nicht mehr weiter.
Da auch in der smb.conf andere Freigaben stehen die ein # haben können soll nur der Teil [Archiv]
verändert werden.
Ich wäre über ein Tip dankbar um weiter zu kommen.

Gruß dfo231

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: sed befehl, ein symbol aus einer zeile

Beitrag von Meillo » 23.02.2017 10:48:56

Du darfst das ^ nicht escapen, wenn es fuer den Zeilenanfang stehen soll. Versuch mal das: /^# */

Wenn du am Ende alle Zeilen ausgeben willst, dann lass das `-n' weg. Verwende stattdessen einen Range um die Bearbeitung einzugrenzen, z.B. so:

Code: Alles auswählen

sed '
/\[Archiv\]/,/^$/ {
    s/.../.../
}
'
(Verwende Code-Tags fuer Beispiele in deinen Posts.)
Use ed once in a while!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: sed befehl, ein symbol aus einer zeile

Beitrag von rendegast » 23.02.2017 11:10:49

Da es hier speziell um samba geht,
lagere die Freigabeanweisungen (oder was sonst noch) in separate Dateien aus,
welche von der Haupt-smb.conf per 'include' eingebunden werden.
Dann muß nur noch die entsprechende 'include'-Anweisung ein/auskommentiert werden.

(Wobei das 'include' auch in per 'include' eingebundenen Dateien verwendet werden kann.
Zur Sicherheit sollten absolute Pfade dafür verwendet werden)

Bei der Auslagerung daran denken,
daß auch die Anweisung '[abschnitt]' ausgelagert wird,
da sonst [abschnitt] weiter Bestand hat, aber mit eventuell ungewollten default-Einstellungen.


Eine weitere Möglichkeit zur Organisation, die Anweisung 'copy':

Code: Alles auswählen

[meine0]
a = b
c = d
e = f

[meine1]
copy = meine0
a = z
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: sed befehl, ein symbol aus einer zeile

Beitrag von ThorstenS » 23.02.2017 12:19:31

Ich arbeite in der smb.conf auch mit (zwei) includes, ähnlich wie rendegast das vorschlägt:

Code: Alles auswählen

include = /etc/samba/includes.conf
include = /etc/samba/overrides.conf
und lasse die include.conf von einem Script (gen-includes.sh) generieren. So schaut bei meinem Sambaserver die Struktur aus:

Code: Alles auswählen

tree /etc/samba/
├── dhcp.conf
├── gdbcommands
├── gen-includes.sh
├── includes.conf
├── overrides.conf
├── shares.available
│   ├── attic.conf
│   ├── dlna.conf
│   ├── drucker.conf
│   ├── Familie.conf
│   ├── homes.conf
│   ├── Medien.conf
│   └── test.conf
├── shares.enabled
│   ├── attic.conf
│   ├── dlna.conf
│   ├── drucker.conf
│   ├── Familie.conf
│   ├── homes.conf
│   └── Medien.conf
└── smb.conf
Das hier war dafür meine Inspiration: http://serverfault.com/a/649619/11340

Über die overrides kann ich adhoc vorher definierte Shares anpassen.

Ich denke so eine Lösung ist flexibler als das, was du da vorhast. Nimm dir die Zeit und bau dir deine jetzige smb.conf um - lagere alle shares aus.
Das ist eine gut investierte Zeit, vllt. findest du dann auch noch einige Altlasten, die du gleich mit entsorgen kannst.

dfo231
Beiträge: 7
Registriert: 13.02.2016 21:09:05

Re: sed befehl, ein symbol aus einer zeile

Beitrag von dfo231 » 23.02.2017 14:45:52

Hallo Leute

Danke für die Vorschläge.

Das mit der include lösung ist schön, stellt mich jetzt aber vor dem Problem das
ich das auch erstmal komplett lernen muss.

Gibt es da eine Hilfeseite die ich nutzen kann?

Vielen Dank euch.
Gruß Dfo231

Antworten