Woher kommt der Umbruch?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
reuniger
Beiträge: 47
Registriert: 11.08.2016 11:01:05

Woher kommt der Umbruch?

Beitrag von reuniger » 02.11.2016 10:10:09

Hallo zusammen,
ich stehe mal wieder davor und weiss nicht woher dieses Phänomen kommt....

Code: Alles auswählen

OS=$(grep operatingsystem_name wbf-u8030.wbf.admin.ch|awk -F"|" '{print $2}'|sed -e "s/\"//g")
echo $OS
RHEL 7.2 Server

Hostname=$(grep hostname wbf-u8030.wbf.admin.ch|awk -F"|" '{print $2}'|sed -e "s/\"//g")
echo $Hostname
wbf-u8030
Wenn ich das Ganze dann zusammen fummel...

Code: Alles auswählen

wbf-u8030  "RHEL
7.2        Server"
erwartet hätte ich aber:

Code: Alles auswählen

wbf-u8030 RHEL 7.2 Server
daher die Frage, wo kommt der Umbruch her?

Benutzeravatar
MSfree
Beiträge: 10752
Registriert: 25.09.2007 19:59:30

Re: Woher kommt der Umbruch?

Beitrag von MSfree » 02.11.2016 10:17:29

reuniger hat geschrieben:wo kommt der Umbruch her?
Jeder echo-Befehl erzeugt einen Zeilenumbruch.

Code: Alles auswählen

echo "x"
echo "y"
gibt also aus.

Willst du es auf einer Zeile, mußt du

Code: Alles auswählen

echo "x""y"
schreiben oder printf verwenden.

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

Re: Woher kommt der Umbruch?

Beitrag von Meillo » 02.11.2016 10:19:19

reuniger hat geschrieben: Wenn ich das Ganze dann zusammen fummel...
Wie genau fummelst du denn zusammen? Daran wird's wohl liegen.
Use ed once in a while!

reuniger
Beiträge: 47
Registriert: 11.08.2016 11:01:05

Re: Woher kommt der Umbruch?

Beitrag von reuniger » 02.11.2016 10:40:11

Code: Alles auswählen

printf "%-10s %200s\n" $Hostname $OS
macht bei mir

Code: Alles auswählen

wbf-u8030   "RHEL                                                                                                                                                                                           
7.2         Server"

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

Re: Woher kommt der Umbruch?

Beitrag von Meillo » 02.11.2016 10:44:27

reuniger hat geschrieben:

Code: Alles auswählen

printf "%-10s %200s\n" $Hostname $OS
Du solltest die Argumente quoten:

Code: Alles auswählen

printf "%-10s %200s\n" "$Hostname" "$OS"
... und dann pipe mal das Ergebnis deines Befehls durch `od -c', damit du siehst *was* das fuer ein ``Umbruch'' war. ;-)
Use ed once in a while!

reuniger
Beiträge: 47
Registriert: 11.08.2016 11:01:05

Re: Woher kommt der Umbruch?

Beitrag von reuniger » 02.11.2016 10:48:22

Code: Alles auswählen

+ for x in '$TREFFER_HOST'
++ awk '-F|' '{print $2}'
++ sed -e 's/"//g'
++ grep hostname wbf-u3074.wbf.admin.ch
+ HOSTNAME=wbf-u3074
++ awk '-F|' '{print $2}'
++ sed -e 's/"//g'
++ grep comment wbf-u3074.wbf.admin.ch
+ COMMENT='Visualizer BV (PR)'
++ awk '-F|' '{print $2}'
++ sed -e 's/"//g'
++ grep operatingsystem_name wbf-u3074.wbf.admin.ch
+ OS='RHEL 7.2 Server'
+ od -c
+ printf '%-10s %s\n' wbf-u3074 Visualizer BV '(PR)'
0000000   w   b   f   -   u   3   0   7   4           V   i   s   u   a
0000020   l   i   z   e   r  \n   B   V
0000040       (   P   R   )  \n
0000046
+ exit
Sorry, kann damit nicht viel anfangen...
Kannst Du das mal ausdeutschen?

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

Re: Woher kommt der Umbruch?

Beitrag von Meillo » 02.11.2016 10:54:27

In POSIX findet man diesen schoenen Satz, der dann das Phaenomen vollends enthuellt:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html hat geschrieben: The format operand shall be reused as often as necessary to satisfy the argument operands.
Davor solltest du aber erst verstanden haben, in welcher Weise die Quotes hier etwas aendern. (Tipp: Wieviele Argumente bekommt printf(1)?)

Du solltest dir die printf-Ausgabe mit Hilfe von `od -c' anschauen, weil du da eher siehst, was wirklich passiert. Insbesondere wenn du mit den Laengenmodifiern bei %s rumspielst und die Veraenderungen beobachtest.

Am Ende sollte du in diesem Thread noch erklaeren, was das Problem war und was du daraus gelernt hast ... um die anderen Leser an deinem Lernerfolg teilhaben zu lassen. :-)
Use ed once in a while!

reuniger
Beiträge: 47
Registriert: 11.08.2016 11:01:05

Re: Woher kommt der Umbruch?

Beitrag von reuniger » 02.11.2016 15:47:45

Meine Fresse was`ne Zangengeburt...

Code: Alles auswählen

for x in $TREFFER_HOST
 do
   HOSTNAME=$(grep hostname $x|awk -F"|" '{print $2}'|sed -e "s/\"//g")
    COMMENT=$(grep comment $x|awk -F"|" '{print $2}'|sed -e "s/\"//g")
   OS=$(grep operatingsystem_name $x|awk -F"|" '{print $2}'|sed -e "s/\"//g")
done

printf "%-15s %s" $HOSTNAME "$COMMENT" #| od -c
Ausgabe, wie es sich gehört :arrow:

Code: Alles auswählen

wbf-u3074       Visualizer BV (PR)
:THX:

Antworten