Удалить символы новой строки с помощью команды оболочки (должно работать в глобальном сочетании клавиш KDE)

Удалить символы новой строки с помощью команды оболочки (должно работать в глобальном сочетании клавиш KDE)

Мне нужна комбинация клавиш для удаления новых строк из текста в текущем выделении. Я хочу поместить свою команду в глобальную комбинацию клавиш KDE, и я уже знаю, как это сделать. Команда, которую я придумал, выглядит так:

sh -c 'xclip -o -sel p | tr -d "\-\n"  | tr "\n" "\ " | xclip -sel c; xdotool key --clearmodifiers ctrl+v'

Это делается для того, чтобы взять текущий выделенный фрагмент и пропустить его через конвейер, trчтобы удалить переносы в конце строк (и объединить фрагменты), затем заменить оставшиеся переносы строк пробелами, затем поместить это в буфер обмена и вставить (там, где находится фокус).

Проблема: не заменяет символы новой строки на пробелы. tr "\n" "\ ". Вместо этого он заменяет новые строки ничем. Я пробовал все виды представления пробела, и ни один из них не работает

Я пробовал xdotool type, но это съедает весь пробел и запускает все вместе даже без использования tr.

Я бы предпочел использовать выделение (первичное или вторичное) вместо буфера обмена, и не использовать его, xdotool key ctrl+vесли это возможно. Еще лучше, если я смогу xdotoolполностью избежать этого из-за неожиданного способа обработки пробелов, как показал мой опыт.

У меня не установлено xvkbdи я предпочитаю не устанавливать. Однако, если это поможет, я могу установитькопия,питон-pyperclip, илиxorg-xclipboard. Я также могу рассмотреть другие инструменты в основных репозиториях Arch.

решение1

Вот что у меня получилось:

sh -c 'xclip -o -sel p | perl -p -e "s/-\n//g"|  tr "\n" " "| xclip -sel c; xdotool key --clearmodifiers ctrl+v'

Я заменил первый trна perl. Я понял, что это trвоспринимает последовательность -\nкак два независимых символа вместо строки.

Я нашел предложение Perl здесь:
https://stackoverflow.com/a/7697604/463994

Вероятно, есть способ сделать это одной командой perl, но я его не знаю. Я приму лучшие ответы.

EDIT: вотлучшее решение, спасибо Ракешу Шарме (см. комментарии):

sh -c 'xclip -o -sel p | perl -pe "s/-\n// || s/\n/ /" | xclip -sel c; xdotool key --clearmodifiers ctrl+v; xdotool key Alt'

Я добавил, xdotool key Altпотому что у меня есть сочетание клавиш, привязанное к комбинации клавиш Alt, и оно требуется для очистки клавиши Alt.

Связанный контент