Я використовую 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
. Але нада. Здається, тут я пропускаю щось дуже важливе / базове.
generate-text | xclip
випадку. Ця відповідь видаляє лише останній новий рядок.