PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash: sed ohne Zeilenumbruch?



Freki
08-06-2017, 09:57
Hallo,

nach langer zeit habe ich auch mal wieder eine Frage.
Also folgendes, ich habe ein Bash-Script geschrieben. Dieses soll aus zwei Listen mit jeweils 96 Einträgen nach und nach die einzelnen Zeilen in eine Variable schreiben für den nächsten Befehl:

#!/bin/bash

declare -i count
count="1"

while [ $count -le 96 ]
do
system=$(sed -ne $count"p" db2-stages_ste-systeme)
dienst=$(sed -ne $count"p" db2-stages_ste)
ssh $system cat "/usd/"$dienst"a/utils/scripts/"$dienst
count=$[$count+1]
done


Nun ist das Problem, dass er bei beiden Variablen ($system und $dienst) ein Zeilenumbruch drin ist, wodurch natürlich der folgende ssh- und cat-befehl fehlschlägt. Per Google bin ich darauf gekommen, ein | tr "\n" "" hinter das sed zu setzen, allerdings hatte dies keine Wirkung. Aber vielleicht könnt ihr ja helfen.

Vielen Dank schonmal!

LG
Freki

Freki
09-06-2017, 09:30
Habe jetzt eine eigene lösung gefunden. Undzwar ersetze ich mit tr den zeilenumbruch durch ein leerzeichen und schneide das dann der cut wieder raus. Sicher nciht die sauberste Lösung aber läuft.

rais
10-06-2017, 12:53
also nachvollziehen kann ich Dein Problem nicht.
Ich habe mir mit


for I in `seq 99`; do echo "A$I" >> db2-stages_ste-systeme; echo "B$I" >> db2-stages_ste; done

2 Dummy-Dateien angelegt und im Script ein echo vor den ssh gestellt. In der Ausgabe sieht das dann beispielsweise so aus:


ssh A84 cat /usd/B84a/utils/scripts/B84

Wenn sed einen Zeilenumbruch an $system und $dienst hängt, dann hätte ich hier


ssh A84
cat /usd/B84
a/utils/scripts/B84

in der Ausgabe erwartet.

Wohlmöglich hängt das Verhalten davon ab, was wie in Deinen beiden Dateien drin steht...

BTW: sed kann selbst Dinge entfernen, Stichwort `d' (delete)

VG