Rimuovere le interruzioni di riga in Bourne Shell da variabile
-
21-09-2019 - |
Domanda
In Bourne shell ho il seguente:
VALUES=`some command that returns multiple line values`
echo $VALUES
Sembra che:
"ONE"
"TWO"
"THREE"
"FOUR"
Vorrei che a guardare come:
"ONE" "TWO" "THREE" "FOUR"
Chiunque può aiutare?
Soluzione
echo $VALUES | tr '\n' ' '
Altri suggerimenti
Un altro metodo, se si vuole non solo stampare il codice, ma assegnarlo a una variabile, e non hanno uno spazio spurio alla fine:
$ var=$(tail -1 /etc/passwd; tail -1 /etc/passwd)
$ echo "$var"
apache:x:48:48:Apache:/var/www:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
$ var=$(echo $var)
$ echo "$var"
apache:x:48:48:Apache:/var/www:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin
La soluzione accettata non ha funzionato per me (su OS X Yosemite). Questo è quello che ho usato:
echo -n $VALUES
Un'altra opzione utilizza xargs
(che mantiene una nuova riga finale se - invece di un possibile spazio finale utilizzando tr
):
echo $VALUES | xargs
printf '%s\n' 1 2 3 4 5 | xargs
@yozloy: come passare stringa di escape utilizzando <<<
tr -d '\n' <<< "`printf '%b' 'a line with line feed \n'`"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow