web-dev-qa-db-ja.com

改行文字なしで2つのコマンドの出力をbashで連結します

必要なもの:

ABの2つのコマンドがあり、それぞれが単一行の文字列(つまり、末尾に1を除いて改行文字のない文字列)を返すとします。コマンドCAの出力を同じ行に連結し、それらの間に1つのスペース文字を挿入するコマンド(またはパイプコマンドのシーケンス)Bが必要です。

動作方法の例:

たとえば、コマンドAの出力が文字列betweenの引用符であるとします:

"The quick"

コマンドBの出力が文字列betweenの引用符であると仮定します。

"brown fox"

次に、コマンドの出力Cを、引用符で囲まれた文字列betweenにします。

"The quick brown fox"

私の最善の解決策:

Cを自分で理解しようとすると、次の一連のパイプコマンドが機能するはずです。

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

残念ながら、このコマンドの出力は

The quick
brown fox
47
synaptik

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 
58
anubhava
echo "$(A)" "$(B)"

ABも複数行を出力しないと仮定して動作するはずです。

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

私は別の簡単な例で解決策を説明しようとします

次のコマンドの出力を連結する必要があります。
"pwd"および "ls"

echo "$(pwd)$(ls)";

出力:2つの連結された文字列

4
hemanto