【发布时间】:2025-11-27 16:00:01
【问题描述】:
我有:
alias pbcopy='xclip -selection clipboard -in'
这让我可以执行date | pbcopy 之类的操作,以获取剪贴板中的日期。
但是,我还在日期末尾得到一个换行符,粘贴后需要手动删除。
如何从管道中删除最后一个换行符(并且只删除最后一个换行符)?
【问题讨论】:
标签: bash shell pipe newline zsh
我有:
alias pbcopy='xclip -selection clipboard -in'
这让我可以执行date | pbcopy 之类的操作,以获取剪贴板中的日期。
但是,我还在日期末尾得到一个换行符,粘贴后需要手动删除。
如何从管道中删除最后一个换行符(并且只删除最后一个换行符)?
【问题讨论】:
标签: bash shell pipe newline zsh
管道:
sed -z '$ s/\n$//'
如果分隔符通过-z 设置为NUL,sed 将不会在流的末尾添加\0,而创建 POSIX 文本文件(定义为以 \n 结尾),它总是会输出一个最终的\n 而没有-z。
例如:
$ { echo foo; echo bar; } | sed -z '$ s/\n$//'; echo tender
foo
bartender
为了证明没有 NUL 添加:
$ { echo foo; echo bar; } | sed -z '$ s/\n$//' | xxd
00000000: 666f 6f0a 6261 72 foo.bar
要删除多个尾随换行符,请通过管道:
sed -Ez '$ s/\n+$//'
【讨论】: