Shr*_*rni 19 command-line scripts text-processing
有没有办法在同一行上打印多行输出(单输出)?
例如,如果输出是:
abc
def
qwerty
Run Code Online (Sandbox Code Playgroud)
是否可以打印:
abcdefqwerty
Run Code Online (Sandbox Code Playgroud)
Dav*_*ter 15
您可以使用 删除给定集合中所有出现的字符tr -d
。要删除换行符,请使用:
tr -d '\n'
Run Code Online (Sandbox Code Playgroud)
与往常一样,您可以使用输入和输出重定向和管道来读取或写入文件和其他进程。
如果你想保留最后一个换行符,你可以简单地用echo
或将它添加回来printf '\n'
,例如:
cat file1 file2... | { tr -d '\n'; echo; } > output.txt
Run Code Online (Sandbox Code Playgroud)
ter*_*don 10
很多方法。为了说明,我已将您的示例保存在file
:
$ cat file | tr -d '\n'
abcdefqwerty$
$ cat file | perl -pe 's/\n//'
abcdefqwerty$
Run Code Online (Sandbox Code Playgroud)
这将删除所有换行符,包括最后一个。你可能想要这样做:
$ printf "%s\n" "$(cat file | perl -pe 's/\n//')"
abcdefqwerty
$ printf "%s\n" "$(cat file | tr -d '\n')"
abcdefqwerty
Run Code Online (Sandbox Code Playgroud)
您可以通过管道传输多行输出 awk
awk '{printf "%s",$0} END {print ""}'
Run Code Online (Sandbox Code Playgroud)
或使用sed
:
sed ':a;N;$!ba;s/\n//g'
Run Code Online (Sandbox Code Playgroud)
$ 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
Run Code Online (Sandbox Code Playgroud)
进一步阅读:使用 AWK·serverfault.SE 删除换行符
归档时间: |
|
查看次数: |
60778 次 |
最近记录: |