Text mit Commandoutput ersetzen?

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Text mit Commandoutput ersetzen?

Beitrag von Knogle » 01.06.2018 22:39:38

Hallo liebe Community!
Ich habe ein Kommando Namens motivate, welches zufaellige Zitate ausgibt.

Nun moechte ich diese in einer Variable speichern in Bash, und habe es so gemacht:
TEXT=$(motivate)
Nun habe ich jedoch das Problem: Ich moechte in einer Datei nach einem String suchen, und diesen mit dem Output von $TEXT ersetzen.
Wie mache ich das?
Wie reagiere ich weiterhin darauf, dass TEXT$ mehrere Zeilen und Sonderzeichnen beeinhaltet?
Weiterhin befinden sich auch "" in dem Output.


Meine Variante spuckt folgenden Fehler aus:

Code: Alles auswählen

sed: -e Ausdruck #1, Zeichen 127: Nicht beendeter »s«-Befehl

Code: Alles auswählen

sed -i "s/ERSETZEN/$TEXT" ~/header.html
Hoffe jemand kann mir helfen!

RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

Re: Text mit Commandoutput ersetzen?

Beitrag von RobertDebiannutzer » 01.06.2018 23:19:32

Dein sed-Befehl ist fehlerhaft. Es fehlt der abschließende Schrägstrich.

Code: Alles auswählen

So müsste er aussehen:
sed -i "s/ERSETZEN/$TEXT/" ~/header.html
statt so:
sed -i "s/ERSETZEN/$TEXT" ~/header.html
Eine andere Sache sind die Sonderzeichen, die sed zu schaffen machen. Aber musst Du diese Aufgabe überhaupt automatisieren? Hört sich so nach Einmal-Angelegenheit an...

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: Text mit Commandoutput ersetzen?

Beitrag von Knogle » 01.06.2018 23:51:01

Ja, also das zu automatisieren ist wichtig.
Das ganze wird ca. 16 mal am Tag ausgefuehrt

So sieht ein beispiel output aus

Code: Alles auswählen

"Thinking should become your capital asset, no matter whatever ups and downs you come across in your life."
                --Dr APJ Abdul Kalam
Ich denke dass die quotes ein Problem darstellen, denn selbst mit / am Ende besteht das gleiche problem

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

Re: Text mit Commandoutput ersetzen?

Beitrag von tobo » 02.06.2018 01:33:03


Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: Text mit Commandoutput ersetzen?

Beitrag von Knogle » 02.06.2018 13:24:42

Ok danke! Das habe ich mal probiert

Code: Alles auswählen

awk -i inplace -v input="$TEXT" 'NR == 1, /ERSETZEN/ { sub(/ERSETZEN/, input) } 1' ~/header.html

Es klappt schonmal einigermassen, jedoch werden Zeichen scheinbar hinzugefuegt

Der Output ist dann z.B. so

Code: Alles auswählen

[1;36m"Barack Obama likes to point to General Motors as the poster child for the job creation success of his economic policies. However, whatever your sentiments about the government's bailout of General Motors, for every job Barack Obama 'saved-or-created' in the U.S. there were two jobs off shore."[1;m [1;35m--Bob Beauprez[1;m[0m

Benutzeravatar
Phineas
Beiträge: 348
Registriert: 20.06.2012 20:26:19

Re: Text mit Commandoutput ersetzen?

Beitrag von Phineas » 02.06.2018 16:46:45

Die Zeichen scheinen mal Escape-Sequenzen gewesen zu sein, um Text zu formatieren (fett/kursiv/farbig/....).
Fragt sich, ob die Formatierungen von Dir gewünscht sind.

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: Text mit Commandoutput ersetzen?

Beitrag von Knogle » 02.06.2018 22:00:03

Ist alles kein Problem, solange diese komischen Zeichen nicht erscheinen.
Dann waere das perfekt.

rodney
Beiträge: 332
Registriert: 09.12.2016 04:15:59

Re: Text mit Commandoutput ersetzen?

Beitrag von rodney » 03.06.2018 08:46:21

Haette motivate eine Option um den Text ohne Farben auszugeben waere das Problem geloest. So bleiben dir nur 2 Moeglichkeiten:

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: Text mit Commandoutput ersetzen?

Beitrag von Knogle » 03.06.2018 14:38:22

Super!!
Das mit dem Quellcode hat geklappt.
Habe ihn so abgeaendert!

Code: Alles auswählen

 if "quote" in quotes["data"][ran_no]:
            quote = quotes["data"][ran_no]["quote"]
            author = quotes["data"][ran_no]["author"]
            quote = "\"" + quote + "\""
            author = "\n --" + author
            white_code = ""
            output = quote + author
            print(output + white_code)

Antworten