Удалить разрывы строк в Bourne Shell из переменной - PullRequest
16 голосов
/ 20 января 2010

В Bourne Shell у меня есть следующее:

VALUES=`some command that returns multiple line values`

echo $VALUES

выглядит как:

"ONE"
"TWO"
"THREE"
"FOUR"

Я бы хотел, чтобы это выглядело так:

"ONE" "TWO" "THREE" "FOUR"

Может кто-нибудь помочь?

Ответы [ 4 ]

43 голосов
/ 20 января 2010

echo $VALUES | tr '\n' ' '

2 голосов
/ 01 мая 2014

Другой метод, если вы хотите не просто распечатать свой код, но присвоить его переменной, и не иметь в конце поддельного пространства:

$ 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
1 голос
/ 10 ноября 2014

Принятое решение не работает для меня (на OS X Yosemite). Вот что я использовал:

echo -n $VALUES

0 голосов
/ 15 апреля 2013

Другим вариантом является использование xargs (хотя последний перевод строки сохраняется - вместо возможного пробела с использованием tr):

echo $VALUES | xargs
printf '%s\n' 1 2 3 4 5 | xargs

@ yozloy: как передать экранированную строку, используя <<<

tr -d '\n' <<< "`printf '%b' 'a line with line feed \n'`"
...