Ответ 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
Что мне нужно:
Предположим, что у меня есть две команды: 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
Вы можете использовать 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
echo "$(A)" "$(B)"
должен работать, полагая, что ни A
, ни B
не выводят несколько строк.
$ echo "$(echo "The quick")" "$(echo "brown fox")"
The quick brown fox
$ commandA () { echo "The quick"; }
$ commandB () { echo "brown fox"; }
$ x="$(commandA) $(commandB)"
$ echo "$x"
The quick brown fox