Text-Processing

使用 shell 命令刪除換行符(必須在 KDE 全域快捷方式中工作)

  • March 18, 2020

我需要一個快捷方式來從目前選擇的文本中刪除換行符。我想把我的命令放到一個 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安裝,我不想安裝它。但是,如果有幫助,我可以安裝copyqpython-pyperclipxorg-xclipboard。我還可以考慮主要 Arch 儲存庫中的其他工具。

這是我想出的:

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 命令來執行此操作,但我不知道。我會接受更好的答案。

編輯:這是更好的解決方案,感謝 Rakesh Sharma(見評論):

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 鍵。

引用自:https://unix.stackexchange.com/questions/573511