ubuntuusers.de

variable, text finden und auschneiden

Status: Ungelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

gerasifbesmumu

Anmeldungsdatum:
11. Dezember 2019

Beiträge: 21

Hallp ch brauche hilfe, in variable bestimmte text finden und ausschneiden! in #!/bin/bash

z.b

1
2
txt0="${bred}[ Stop        ]   ${bwhi}System Stop!${norm}\n"
txt1="%s${bred}[ Error       ]   E0x01 ${bwhi}File ${bgre}$file${bwhi} not exist.${norm}\n"

wenn in text ist, z.b ${bred}, ${norm,} oder ähnliche variable ist, ausschneiden,, so das nir text bleibt

In ${bred} ${norm,} oder andere variable, handelt sich um Color /033[1;..m

Die Neu Wariable soll so aussehen

1
2
txt0="[ Stop       ]   System Stop"
txt1="[Error       ]   E0x01 File $file$ not exist."

micneu

Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 752

Wohnort: Hamburg

gerasifbesmumu schrieb:

wenn in text ist, z.b ${bred}, ${norm,} oder ähnliche variable ist, ausschneiden,, so das nir text bleibt

}}}

Leider verstehe ich deinen Text nicht, was ist „nir“ Bitte ein Beispiel was genau du meinst

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 4796

micneu schrieb:

Leider verstehe ich deinen Text nicht, was ist „nir“

"i" und "u" sitzen auf der Tastatur direkt nebeneinander. 😉

Falls es nur um die Farbgebung in Terminalausgaben geht, da sollte es eigentlich™ doch reichen, einfach auf die Zahlen zu zielen.

TK87

Anmeldungsdatum:
8. Juli 2019

Beiträge: 243

Wohnort: Aachen

Moin,

trollsportverein schrieb:

Falls es nur um die Farbgebung in Terminalausgaben geht, da sollte es eigentlich™ doch reichen, einfach auf die Zahlen zu zielen.

genau, so ist es viel sinniger.

gerasifbesmumu schrieb:

In ${bred} ${norm,} oder andere variable, handelt sich um Color /033[1;..m

Wirklich mit Slash? Oder müsste das nicht eher mit Backslash

\033[1;..m

lauten?

  • Mit Backslash z.B. so...

    ~$ echo 'Irgendein \033[1;32mText mit \033[1;91mFarbkodierung\033[0m' | sed 's#\\033\[[^m]*m##g'
    Irgendein Text mit Farbkodierung
  • Oder falls wirklich Slash's sein sollen...

    ~$ echo 'Irgendein /033[1;32mText mit /033[1;91mFarbkodierung/033[0m' | sed 's#/033\[[^m]*m##g'
    Irgendein Text mit Farbkodierung

Gruß Thomas

gerasifbesmumu

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2019

Beiträge: 21

OK ich formuliere andes

so soll in Monitor ausgeben (fabig)

1
2
3
4
5
6
7
bred="\033[1;31m"
norm="\033[0m"
usw

txt0="${bred}[ Stop        ]   ${bwhi}System Stop!${norm}\n"
asgabe mit
printf "%txt0"

soll umgewandelt in

1
[ Stop        ]   System Stop!

Ohne ${...}, so das ich, in text datei speichern kann.

1
2
3
echo $txt > $file
ergebniss
[ Stop        ]   System Stop

gerasifbesmumu

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2019

Beiträge: 21

OK, Ich hab!

1
txt=$(echo "{$txt}" | sed 's#\\033\[[^m]*m##g')

jetzt brauch ich, wenn am ende variable "$txt" ist "\n"

"\n" ausschneiden

TK87

Anmeldungsdatum:
8. Juli 2019

Beiträge: 243

Wohnort: Aachen

Das sollte so funktionieren...

1
sed -zE 's#\\033\[[^m]*m\n?##g'

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4672

Wohnort: Berlin

@gerasifbesmumu Kannst Du nicht einfach $bred, $norm usw. als leere Zeichenkette definieren, beziehungsweise die Definition(en) einfach entfernen, statt das erst einzubauen und danach auszufiltern‽

Edit: Im colorized-logs-Package gibt es ein ansi2text-Programm, das von stdin liest, Ansi-Escape-Sequenzen entfernt, und den übrig gebliebenen Text nach stdout schreibt.

Antworten |