Bash 从外壳程序管道中删除最终换行符(\n)
我有: 这使我可以执行类似于Bash 从外壳程序管道中删除最终换行符(\n),bash,shell,pipe,newline,zsh,Bash,Shell,Pipe,Newline,Zsh,我有: 这使我可以执行类似于date | pbcopy的操作,以在剪贴板中获取日期 但是,我在日期的末尾也会得到一个换行符,粘贴后需要手动删除它 如何从管道中删除最终换行符(且仅删除最终换行符?管道通过: alias pbcopy='xclip -selection clipboard -in' $ { echo foo; echo bar; } | sed -z '$ s/\n$//' | xxd 00000000: 666f 6f0a 6261 72
date | pbcopy
的操作,以在剪贴板中获取日期
但是,我在日期的末尾也会得到一个换行符,粘贴后需要手动删除它
如何从管道中删除最终换行符(且仅删除最终换行符?管道通过:
alias pbcopy='xclip -selection clipboard -in'
$ { echo foo; echo bar; } | sed -z '$ s/\n$//' | xxd
00000000: 666f 6f0a 6261 72 foo.bar
如果通过-z
将分隔符设置为NUL
,则sed不会将\0
添加到流的末尾,而要创建POSIX文本文件(定义为以\n
结尾),它将始终输出最终的\n
,而不使用-z
例如:
并为证明无NUL
增加:
$ { echo foo; echo bar; } | sed -z '$ s/\n$//'; echo tender
foo
bartender
要删除多个尾部换行符,请通过以下管道:
alias pbcopy='xclip -selection clipboard -in'
$ { echo foo; echo bar; } | sed -z '$ s/\n$//' | xxd
00000000: 666f 6f0a 6261 72 foo.bar