PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BASH - Zeilenumbruch muss da weg


nalye
2009-12-03, 22:53:43
Ich habe folgendes Kommando zur Ausgabe:


if grep -q $suchbegriff datei
then
echo -ne "$name\c" " ist online! "
else
echo -ne "$name\c" " ist offline... "
curl -s $url | grep -i "zuletzt online" | cut -f 2 -d ">" | cut -f 1 -d "<"
fi


Die Ausgabe erscheint jedoch folgendermaßen:


<Name>
ist offline... Zuletzt online am 03.12.2009


Wie bekomme ich den Zeilenumbruch zwischen <Name> und Status weg?

Baalzamon
2009-12-04, 13:24:11
Ich würde schätzen, dass das Problem daran liegt, das du name irgendwo herholst und ein Newline mit in der Variable speicherst.

Ich denke du musst irgendwie (mit AWK oder SED) das Newline im String loswerden.

Gast
2009-12-04, 13:52:42
Vll. so:
echo -e 'hello\n' | tr -d '\n'

oder '\r' je nach 'Zeilenumbruch'.

nalye
2009-12-04, 15:30:39
Der Inhalt von $name wird aus einem HTML-Quelltext ausgelesen


curl -s $url | grep -i "Seite von" | grep "<title>" | cut -f 5,6,7,8,9 -d " " | cut -f 1 -d "<"

Geht eleganter, aber es geht ;)

Mittlerweile habe ich auch das hier versucht:


cat name | sed 's/\n/ /g'


Bringt alles nichts :(

Baalzamon
2009-12-04, 15:49:49
[...]Mittlerweile habe ich auch das hier versucht:


cat name | sed 's/\n/ /g'


Bringt alles nichts :(
Ich glaube mit SED geht das nicht so ohne weiteres. Allerdings müsste tr funktionieren:

#!/bin/bash
name="test\n"
echo -e "$name" neue Zeile?

> test.sh
test
neue Zeile?


#!/bin/bash
name="test\n"
echo -e "$name" neue Zeile? | tr -d '\n'

> test.sh
test neue Zeile?

fezie
2009-12-04, 15:54:59
tr ist für sowas wesentlich einfacher als sed und genau für sowas auch gemacht worden.
Statt '\n' würde ich einfach '\r\n' nutzen, dann ist es vollkommen egal ob die Datei Unix (\n), Windows (\r\n) oder MacOS (\r) Zeilenendungen besitzt.

nalye
2009-12-04, 16:27:39
Der Tipp von Baalzamon hat´s gebracht - weil wir es können :D

Baalzamon
2009-12-04, 16:46:39
Der Tipp von Baalzamon hat´s gebracht - weil wir es können :D
;D :uup:

nalye
2009-12-04, 17:09:27
Das Treffen MÜSSEN wir wiederholen ;D

Gast
2009-12-04, 17:12:21
Der Tipp von Baalzamon hat´s gebracht - weil wir es können :D
Nur interessenbedingt, was unterscheidet sein Tipp, von meinen aus Posting #3?

nalye
2009-12-04, 17:16:15
Dass ich ihn überlesen habe :conf: :ubeer:

nalye
2009-12-13, 06:39:28
Und nochmal eine Frage:

Wenn ich einer Variable ein cURL-Kommando übergeben will, wie etwa
var=curl -s http://www.hrmpf.de | grep bla
Wie bekomme ich das hin, dass Bash nicht mehr meckert, dass "-s" und so ein ungültiges Argument ist?
Mit Anführungszeichen macht er es trotzdem nicht :(

Gast
2009-12-13, 11:34:37
Wenn ich einer Variable ein cURL-Kommando übergeben will, wie etwa
var=curl -s http://www.hrmpf.de | grep bla
Wie bekomme ich das hin, dass Bash nicht mehr meckert, dass "-s" und so ein ungültiges Argument ist?(
var=$(curl -s http://www.hrmpf.de | grep bla)

Evtl wäre auch eine Bash-Einführung hilfreich, bei den ganzen aneinandergereiten grep- und cut-Aufrufen wellt sich einem ja die Rückenhaut.

Baalzamon
2009-12-13, 12:46:59
je nach verwendeter Shell geht auch

var=`curl -s http://www.hrmpf.de | grep bla`

fezie
2009-12-13, 13:40:43
Ich würde noch das $() bzw. `` in "" verpacken damit Leerzeichen kein Problem sind.
Also var="$(curl -s http://www.hrmpf.de | grep bla)"