Answers:
你的命令基本上就是这个。
$ (echo '400' && echo '4') | hexdump -C
00000000 34 30 30 0a 34 0a |400.4.|
00000006
输出不包括行尾 \n
又名 0a
字符。所以你可以做的一件容易的事就是通过一个将删除它的命令来管道 \n
。
所以这样的事情
$ (echo '400' && echo '4') | tr '\n' ' ' | hexdump -C
00000000 34 30 30 20 34 20 |400 4 |
00000006
哪个有实际产量 400 4
。但是这不包括任何行结尾,因此您可能只想删除从第一个命令结束的行。
$ (echo '400' | tr '\n' ' ' && echo '4') | hexdump -C
00000000 34 30 30 20 34 0a |400 4.|
00000006
无论如何,重点是行结尾只是一个字符使用tr,sed,awk或你喜欢的工具,让你操作字符串。
根据您的要求,可能有效的另一个选项可能是执行以下操作。这样,命令的输出就会被神奇地剥离EOL,但echo命令会附加EOL。
$ echo "$(echo '400') $(echo '4')" | hexdump -C
00000000 34 30 30 20 34 0a |400 4.|
00000006
paste <(cmd1) <(cmd2) >> file.txt
我用了 paste
{ command1 & command2; } | paste -d" " -s >> file1
(关注后台命令1已被注意到)
演示:
$ { echo 400; echo 4; }
400
4
$ { echo 400; echo 4; } | paste -d" " -s
400 4