shell 连接流的所有行

rvpgvaaj  于 2022-11-16  发布在  Shell
关注(0)|答案(3)|浏览(146)

我怎样才能把所有的线连在一起?
所需输出:

$ echo 'one\ntwo' | tr '\n' ''
onetwo

实际产量:

tr: empty string2

我也试过paste -sd '' -,但得到

paste: no delimiters specified

也是sed

$ echo 'one\ntwo' | sed 's/\n//'
one
two
1u4esq0p

1u4esq0p1#

tr要求第二个参数至少有一个字符,这样它就知道要将第一个参数中的字符翻译成什么。如果替换字符串中的字符数少于匹配字符串中的字符数,则替换字符串的最后一个字符将用于所有剩余字符。但是如果替换字符串为空,则其余字符没有任何重复。
如果要删除字符,请使用tr -d

echo $'one\ntwo' | tr -d '\n'

还要注意,你必须使用$'...'让bash把\n当作换行符,否则它就是字符串\n

cdmah0mi

cdmah0mi2#

你要找的

paste -sd '\0' -

paste\0解释为空字符串,而不是NUL字节。

$ printf '%s\n' one two | paste -sd '\0' - | od -t x1 -t a
0000000  6f  6e  65  74  77  6f  0a
          o   n   e   t   w   o  nl
0000007
fjnneemd

fjnneemd3#

终于找到了

$ echo 'one\ntwo' | perl -p -e 's/\n//'
onetwo

后面连个换行符都没有

相关问题