我已经使用sed了很长一段时间,但这是我遇到的一个怪癖,我无法解决。
让我用实际案例来解释我的问题。
场景#1
printf "ls" | xclip -selection clipboard
echo "ls" | xclip -selection clipboard
Run Code Online (Sandbox Code Playgroud)
在第一个命令中,我通过管道将printf输出xclip复制到剪贴板。现在,printf, 不像echo默认情况下不会在末尾插入新行。因此,如果我将此内容粘贴到终端中,ls则复制的命令不会自动运行。
在第二个中,末尾有一个新行,因此粘贴剪贴板内容也会导致在剪贴板中运行命令。
这对我来说是不可取的。所以,我想使用 删除换行符sed,但它失败了,如下面的场景所述。
场景#2
echo "ls" | sed -r 's/\n//g' | xclip -selection clipboard
Run Code Online (Sandbox Code Playgroud)
剪贴板中的内容仍然包含换行符。当我将其粘贴到终端时,该命令会自动运行。
我也尝试删除回车符\r。但是纳达。看来我在这里遗漏了一些非常关键/基本的东西。