Подтвердить что ты не робот

Объединить в bash вывод двух команд без символа новой строки

Что мне нужно:

Предположим, что у меня есть две команды: A и B, каждая из которых возвращает однострочную строку (т.е. строку без символа новой строки, кроме, возможно, 1 в самом конце). Мне нужна команда (или последовательность команд с каналами) C, которая объединяет вывод команд A и B в одной строке и вставляет один пробельный символ между ними.

Пример того, как он должен работать:

Например, предположим, что вывод команды A является строкой между кавычками здесь:

"The quick"

И пусть вывод команды B - это строка между кавычками здесь:

"brown fox"

Затем я хочу, чтобы вывод команд (ов) C был строкой между кавычками здесь:

"The quick brown fox"

Мое лучшее решение:

При попытке выяснить C самостоятельно, казалось, что последовательность последовательных команд с каналами должна работать:

{ echo "The quick" ; echo "brown fox" ; } | xargs -I{} echo {} | sed 's/\n//'

К сожалению, вывод этой команды

The quick
brown fox
4b9b3361

Ответ 1

Вы можете использовать tr:

{ echo "The quick"; echo "brown fox"; } | tr "\n" " "

ИЛИ используя sed:

{ echo "The quick"; echo "brown fox"; } | sed ':a;N;s/\n/ /;ba'

ВЫВОД:

The quick brown fox 

Ответ 2

echo "$(A)" "$(B)"

должен работать, полагая, что ни A, ни B не выводят несколько строк.

$ echo "$(echo "The quick")" "$(echo "brown fox")"
The quick brown fox

Ответ 3

$ commandA () { echo "The quick"; }
$ commandB () { echo "brown fox"; }
$ x="$(commandA) $(commandB)"
$ echo "$x"
The quick brown fox