Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Concatenate in bash the output of two commands without newline character

What I need:

Suppose I have two commands, A and B, each of which returns a single-line string (i.e., a string with no newline character, except possibly 1 at the very end). I need a command (or sequence of piped commands) C that concatenates the output of commands A and B on the same line and inserts 1 space character between them.

Example of how it should work:

For example, suppose the output of command A is the string between the quotation marks here:

"The quick" 

And suppose the output of command B is the string between the quotation marks here:

"brown fox" 

Then I want the output of command(s) C to be the string between the quotation marks here:

"The quick brown fox" 

My best attempted solution:

In trying to figure out C by myself, it seemed that the follow sequence of piped commands should work:

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

Unfortunately, the output of this command is

The quick brown fox 
like image 646
synaptik Avatar asked Jan 01 '14 18:01

synaptik


People also ask

How do I combine two bash commands?

In Bash, we can use both “{ }” and “( )” operators to group commands.


1 Answers

You can use tr:

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

OR using sed:

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

OUTPUT:

The quick brown fox  
like image 137
anubhava Avatar answered Oct 30 '22 13:10

anubhava