我怎样才能把所有的线连在一起?所需输出:
$ echo 'one\ntwo' | tr '\n' '' onetwo
实际产量:
tr: empty string2
我也试过paste -sd '' -,但得到
paste -sd '' -
paste: no delimiters specified
也是sed
sed
$ echo 'one\ntwo' | sed 's/\n//' one two
1u4esq0p1#
tr要求第二个参数至少有一个字符,这样它就知道要将第一个参数中的字符翻译成什么。如果替换字符串中的字符数少于匹配字符串中的字符数,则替换字符串的最后一个字符将用于所有剩余字符。但是如果替换字符串为空,则其余字符没有任何重复。如果要删除字符,请使用tr -d。
tr
tr -d
echo $'one\ntwo' | tr -d '\n'
还要注意,你必须使用$'...'让bash把\n当作换行符,否则它就是字符串\n。
$'...'
\n
cdmah0mi2#
你要找的
paste -sd '\0' -
paste将\0解释为空字符串,而不是NUL字节。
paste
\0
$ 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
fjnneemd3#
终于找到了
$ echo 'one\ntwo' | perl -p -e 's/\n//' onetwo
后面连个换行符都没有
3条答案
按热度按时间1u4esq0p1#
tr
要求第二个参数至少有一个字符,这样它就知道要将第一个参数中的字符翻译成什么。如果替换字符串中的字符数少于匹配字符串中的字符数,则替换字符串的最后一个字符将用于所有剩余字符。但是如果替换字符串为空,则其余字符没有任何重复。如果要删除字符,请使用
tr -d
。还要注意,你必须使用
$'...'
让bash把\n
当作换行符,否则它就是字符串\n
。cdmah0mi2#
你要找的
paste
将\0
解释为空字符串,而不是NUL字节。fjnneemd3#
终于找到了
后面连个换行符都没有