ubuntuusers.de

Variable speichern ohne zeichen

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

wal78

Anmeldungsdatum:
21. Oktober 2017

Beiträge: Zähle...

hallo ich brauche hilfe ?

ich habe eine variable

1
ErrNoArgs1="\e[31mError: \e[0m\e[1mCase\e[0m existiert nicht.\nBitte Prüfen Sie \e[1mCase\e[0m"

und das will ich in datei $file speichern ohne zeichen

so

1
Error Case existirt nicht Bitte prüfen Sie Case

Bitte helfen Sie mir ☺

wal78

(Themenstarter)

Anmeldungsdatum:
21. Oktober 2017

Beiträge: 28

hi 🙄 ich hab jetz so gemacht

echo "$ErrNoArgs1" |  tr -c -d 'a-z A-Z üöäÜÖÄ\n, ' > $file 

dann ergibt !!

1
emError ememCaseem existiert nichtnBitte Prüfen Sie emCaseem

es ergibt immer noch zuviel

1
e m

bitte helf mir 🙄

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11265

Wohnort: München

Wie wäre es damit? https://www.commandlinefu.com/commands/view/12043/remove-color-special-escape-ansi-codes-from-text-with-sed

echo "$ErrNoArgs1" | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" 

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5815

Wohnort: Ankh-Morpork

wal78 schrieb:

hi 🙄 ich hab jetz so gemacht

echo "$ErrNoArgs1" |  tr -c -d 'a-z A-Z üöäÜÖÄ\n, ' > $file 

dann ergibt !!

1
emError ememCaseem existiert nichtnBitte Prüfen Sie emCaseem

es ergibt immer noch zuviel

1
e m

Dein Problem sind die Farbencodes in deinem Text. Eine entsprechende Googlesuche bringt genügend hilfreiche Ergebnisse, das sinnvollste ist das folgende sed-Kommando:

sed -r "s/\x1B\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]//g"

Kombinierst du das mit deinem Ansatz und einem redirect in eine Datei kommt folgendes raus:

echo $ErrNoArgs1 | sed -r "s/\x1B\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]//g" > ~/file

wal78

(Themenstarter)

Anmeldungsdatum:
21. Oktober 2017

Beiträge: 28

bei mir fuktionniert nicht

1
sed

gibs alternative

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11265

Wohnort: München

Wie wäre es mit perl?

perl -e "use Term::ANSIColor; print color \"white\"; print \"$ErrNoArgs1\n\"; print color \"reset\";" |  perl -pe 's/\x1b\[[0-9;]*m//g' 

wal78

(Themenstarter)

Anmeldungsdatum:
21. Oktober 2017

Beiträge: 28

seahawk1986 schrieb:

Wie wäre es mit perl?

perl -e "use Term::ANSIColor; print color \"white\"; print \"$ErrNoArgs1\n\"; print color \"reset\";" |  perl -pe 's/\x1b\[[0-9;]*m//g' 

Fast 👍

ich habe folgendes gemacht:

1
2
3
4
5
6
date=`date +%d.%m.%Y-%H:%M:%S`		
ErrNoArgs1="\e[31mError: \e[0m\e[1mCase\e[0m existiert nicht.\nBitte Prüfen Sie \e[1mCase\e[0m"	

abx=$($ErrNoArgs1 | perl -e "use Term::ANSIColor; print color \"white\"; print \"$ErrNoArgs1\n\"; print color \"reset\";" |  perl -pe 's/\x1b\[[0-9;]*m//g') 

echo  $date $abx > file

Es Funktioniert (schreibt) in file, nur spring Fehler raus

1
: Zeile 15: \e[31mError:: Kommando nicht gefunden.

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5815

Wohnort: Ankh-Morpork

wal78 schrieb:

bei mir fuktionniert nicht

1
sed

Was für ein System nutzt du denn? sed ist eigentlich standardmäßig auf jeden Linux installiert, Unix ebenso (Wir nutzen das z.B. auch unter Solaris 10). Was ist denn die genaue Fehlermeldung? "Funktioniert nicht" ist wenig hilfreich.

wal78

(Themenstarter)

Anmeldungsdatum:
21. Oktober 2017

Beiträge: 28

Hefeweiz3n ❗

ich habe "sed" schön nach Installiert, geht nicht!

es zeigt keine fehler, nur speichert ergebnis mit zeichen

mit "perl" funktioniert fast 💡

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11265

Wohnort: München

wal78 schrieb:

ich habe folgendes gemacht:

1
2
3
4
5
6
date=`date +%d.%m.%Y-%H:%M:%S`		
ErrNoArgs1="\e[31mError: \e[0m\e[1mCase\e[0m existiert nicht.\nBitte Prüfen Sie \e[1mCase\e[0m"	

abx=$($ErrNoArgs1 | perl -e "use Term::ANSIColor; print color \"white\"; print \"$ErrNoArgs1\n\"; print color \"reset\";" |  perl -pe 's/\x1b\[[0-9;]*m//g') 

echo  $date $abx > file

Es Funktioniert (schreibt) in file, nur spring Fehler raus

1
: Zeile 15: \e[31mError:: Kommando nicht gefunden.

Kein wunder, du versuchst ja den Inhalt der Variablen als Befehl auszuführen, dabei steckt die doch schon im Perl-Befehl, wenn du genau hinsiehst:

datum=$(date +%d.%m.%Y-%H:%M:%S)
ErrNoArgs1="\e[31mError: \e[0m\e[1mCase\e[0m existiert nicht.\nBitte Prüfen Sie \e[1mCase\e[0m"	
abx="$(perl -e "use Term::ANSIColor; print color \"white\"; print \"$ErrNoArgs1\n\"; print color \"reset\";" |  perl -pe 's/\x1b\[[0-9;]*m//g')"
echo $datum $abx > file 

wal78

(Themenstarter)

Anmeldungsdatum:
21. Oktober 2017

Beiträge: 28

Ach ja stimmmt 😢

Danke Perfekt 👍 💡

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5815

Wohnort: Ankh-Morpork

wal78 schrieb:

Hefeweiz3n ❗

ich habe "sed" schön nach Installiert, geht nicht!

es zeigt keine fehler, nur speichert ergebnis mit zeichen

Sorry, mein Beispiel hatte tatsächlich einen Fehler: Das Problem lag in meinem Beispiel allerdings nicht an sed sondern an echo dem der -e Schalter mitgegeben werden muss mit dem Farbcodes auch sauber interpretiert werden so das sed die auch als Steuerzeichen sieht. Das Fehlen davon führte dazu das sed die Zeichenketten nicht sauber filtern konnte...

(Erläuterung: Ich nutze selbst die zsh anstatt der bash shell, und das von der zsh bereitgestellte echo nutzt automatisch den extended mode durch den Farben automatisch dargestellt werden. Bei der bash (gerade bei mir auch getestet) muss man den -e Schalter explizit angeben.)

Also in Richtig:

echo -e $ErrNoArgs1 | sed -r "s/\x1B\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]//g"

Kannst du ja gerne nochmal testen 😉.

wal78

(Themenstarter)

Anmeldungsdatum:
21. Oktober 2017

Beiträge: 28

ja mach ich spaiter 👍

Danke ☺ Hefeweiz3n

wal78

(Themenstarter)

Anmeldungsdatum:
21. Oktober 2017

Beiträge: 28

Danke hat Funktioniert 🤓 Hefeweiz3n

ich brauch nochmal Hilfe 💡

und zwar umwandern alle

1
2
3
4
5
6

farbe anfang, Fette Schrift z.B '\e[31m'  und '\e[1m' ins '<b>'  #Fette Schrift

und 

Farbe beenden, Normale Schrift z.B '\e[0m' ins '</b>'    #Normale Schrift

🙄

Antworten |