使用 shell 指令刪除換行符號(必須在 KDE 全域捷徑中運作)

使用 shell 指令刪除換行符號(必須在 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安裝,而且我不想安裝它。但是,如果有幫助,我可以安裝複製q,python-pyperclip, 或者xorg-x剪貼簿。我還可以考慮主要 Arch 儲存庫中的其他工具。

答案1

這是我想出來的:

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

我用 perl 替換了第一個tr。我意識到將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 鍵。

相關內容