Я пользуюсь 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случае. Этот ответ удаляет только последний перевод строки.