[gelöst] debian bash script suche text in Datei und füge Text hinzu

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

[gelöst] debian bash script suche text in Datei und füge Text hinzu

Beitrag von joe2017 » 15.04.2024 08:25:37

Guten Morgen zusammen,

ich möcht gerne mehrere Zeilen in eine Conig Datei hinter einen bestimmten Text einfügen.
mit sed habe ich bereits mittels suchen und ersetzten einen bestimmten Text ersetzt.
Jetzt möchte ich jedoch einen text suchen und nach diesem mehrere Zeilen Text einfügen.

Einen normalen Text einfügen mache ich in der Regl immer so:

Code: Alles auswählen

sudo cat >> /path/to/file << EOF
text
text
text
EOF
Jedoch darf ich das nicht immer, weil mir Berechtigungen fehlen.
Geht das auch eleganter?

Wie kann ich diese beiden funktionen verbinden?

Würde mich über einen Tipp freuen.
Zuletzt geändert von joe2017 am 16.04.2024 07:39:55, insgesamt 1-mal geändert.

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: debian bash script suche text in Datei und füge Text hinzu

Beitrag von tobo » 15.04.2024 08:46:35

joe2017 hat geschrieben: ↑ zum Beitrag ↑
15.04.2024 08:25:37
Einen normalen Text einfügen mache ich in der Regl immer so:

Code: Alles auswählen

sudo cat >> /path/to/file << EOF
text
text
text
EOF
Das ist der Datei anhängen. Mit sed einem bestimmten Text anhängen (a = append) z.B. so:

Code: Alles auswählen

$ echo -e "Das\nist\nNikolaus" | sed '/ist/a das\nHaus\nvom'
Das
ist
das
Haus
vom
Nikolaus
$
Zuletzt geändert von tobo am 15.04.2024 08:50:06, insgesamt 1-mal geändert.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: debian bash script suche text in Datei und füge Text hinzu

Beitrag von joe2017 » 15.04.2024 08:49:25

Danke schon mal für den Tipp.
Aber mit \n wollte ich das nicht machen, da der Text welchen ich einfügen muss sehl lang ist. Das wäre dann zu aufwändig!
Ich muss eine Config erweitern. Aber erst nach einer bestimmten Stelle in der Datei.

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: debian bash script suche text in Datei und füge Text hinzu

Beitrag von tobo » 15.04.2024 09:30:39

Man kann den anzuhängenden Text in eine Datei schreiben und diese Datei hinter der Zeile einlesen (r = read FILE):

Code: Alles auswählen

$ printf "das\nHaus\nvom\n" >append
$ printf "Das\nist\nNikolaus\n" | sed '/ist/r append'
Das
ist
das
Haus
vom
Nikolaus
$
EDIT: Beispiel korrigiert

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: debian bash script suche text in Datei und füge Text hinzu

Beitrag von joe2017 » 15.04.2024 14:59:28

Das hört sich ganz interessant an. Dann würde der Text aber auch in einer Variable reichen oder?

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: debian bash script suche text in Datei und füge Text hinzu

Beitrag von tobo » 15.04.2024 16:27:06

In einer Variable ist deutlich komplizierter, da man dann um die Zeilenumbrüche im Anhängsel herumarbeiten muss. Auf einer Here-String-fähigen Shell:

Code: Alles auswählen

$ printf "Das\nist\nNikolaus\n" >FILE
$ append=`printf "das\nHaus\nvom\n"`
$ sed '/ist/r /dev/stdin' FILE <<<"$append"
Das
ist
das
Haus
vom
Nikolaus
$
Was spricht denn gegen die Datei?

EDIT:
Alternativ mit einer Variable über ex:

Code: Alles auswählen

$ ex -sc "/ist/ normal! o$append" -cx FILE
$ cat FILE
Das
ist
das
Haus
vom
Nikolaus
$

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: debian bash script suche text in Datei und füge Text hinzu

Beitrag von joe2017 » 16.04.2024 07:39:39

Ich habe es jetzt mit der Datei getestet. Danke nochmal :-)

Antworten