如何在同一行打印多行输出?

如何在同一行打印多行输出?

有没有方法在同一行上打印多行输出(单行输出)?

例如,如果输出是:

abc
def
qwerty

是否可以打印:

abcdefqwerty 

答案1

您可以使用 删除给定集合中出现的所有字符tr -d。要删除换行符,请使用:

tr -d '\n'

与往常一样,您可以使用输入和输出重定向和管道来读取或写入文件和其他进程。

如果您想保留最后一个换行符,您可以简单地用echo或将其添加回来printf '\n',例如:

cat file1 file2... | { tr -d '\n'; echo; } > output.txt

答案2

有很多方法。为了说明,我已将您的示例保存在file

$ cat file | tr -d '\n'
abcdefqwerty$ 
$ cat file | perl -pe 's/\n//'
abcdefqwerty$ 

这会删除所有换行符,包括最后一个换行符。你可能需要这样做:

$ printf "%s\n" "$(cat file | perl -pe 's/\n//')"
abcdefqwerty
$ printf "%s\n" "$(cat file | tr -d '\n')"
abcdefqwerty

答案3

您可以通过管道传输多行输出awk

awk '{printf "%s",$0} END {print ""}'

或使用sed

sed ':a;N;$!ba;s/\n//g'

示例运行

$ echo -e "1\n2\n3\n4" | awk '{printf "%s",$0} END {print ""}'
1234
$ echo -e "1\n2\n3\n4" | sed ':a;N;$!ba;s/\n//g'              
1234

进一步阅读:使用 AWK 删除换行符 · serverfault.SE

答案4

这个答案可以解决您尝试创建的问题:为什么 bash 会删除 $(cat file) 中的 \n?

如果你输入,cat myfile.txt你会看到:

abc
def
ghi

但如果你输入,echo $(cat myfile.txt)你会看到:

abc def ghi

请注意,此方法会在原来单独的新行处插入一个空格。这会使输出更易于阅读,但并不严格遵守您的问题范围。

相关内容