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