我已经使用sed
了一段时间了,但是这是我遇到的一个怪癖,我无法解决。
让我用实际情况解释我的问题。
场景#1
printf "ls" | xclip -selection clipboard
echo "ls" | xclip -selection clipboard
在第一个命令中,我将printf
输出传递到,xclip
以便将其复制到剪贴板。现在,printf
与echo
一样,默认情况下不会在末尾插入新行。因此,如果我将此内容粘贴到终端中,ls
则复制的命令不会自动运行。
在第二行的末尾有一个新行,因此粘贴剪贴板内容也将导致命令在剪贴板中运行。
这对我来说是不可取的。因此,我想使用来删除换行符sed
,但失败了,如下图所示。
场景#2
echo "ls" | sed -r 's/\n//g' | xclip -selection clipboard
剪贴板中的内容仍然包含换行符。当我将其粘贴到终端时,该命令将自动运行。
我还尝试删除回车符\r
。但是娜达。似乎我在这里错过了一些非常关键/基本的东西。
sed
\n
分隔线上的分隔符-在输入时始终将其删除,在输出时将其重新插入。有从来没有一个\n
在ewline字符sed
未曾发生,你做了一个编辑的结果模式的空间。注意:除了GNUsed
的-z
模式...
只需使用tr
:
echo ls | tr -d \\n | xclip -selection clipboard
或者,更好的是,sed
完全忘记了:
printf ls | xclip -selection clipboard
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句