跳至主要内容

2 篇文章 含有標籤「nushell」

檢視所有標籤

Windows 如何在 Console 中使用剪貼簿的內容

· 閱讀時間約 3 分鐘
mrhihi.paul
Owner of this blog

前情提要

昨天提到 macOS 怎麼在 Console 中用指令使用剪貼簿的內容,因為平時工作是雙平台混合使用,所以好奇,在 Windows 下是不是有相應的實作,簡單的 搜尋 研究一下。

Nushell 上場

首先,如何透過 Console 的命令取得剪貼簿的內容呢? 我 google 了一下,有找到幾種方式,一種是透過 PowerShell 的 Get-Clipboard ,一種是透過安裝 pasteboard ,還有其他的,但沒啥時間研究,先就這兩種分別說明。

PowerShell Get-Clipboard

這個方法比較單純,不需要額外安裝其他工具。
先把要處理的內容複製到剪貼簿中,接著打開 Nushell 並輸入這樣的指令

powershell get-clipboard | lines

然後我們就會得到這樣的錯誤訊息 取出剪貼簿編碼錯誤

編碼錯誤, Nushell 建議我們用 decode 去處理非 UTF-8 的字元

powershell get-clipboard | decode | lines | split column --regex "[:,]"

完美 編碼處理後取出剪貼簿

接著再把結果輸入到剪貼簿中就可以打完收工了,輸入到剪貼簿這個動作,可以透過 Windows 內建的 Clip 指令完成

powershell get-clipboard | decode | lines | split column --regex "[:,]" | to csv -s "\t" | clip

執行完這行指令後,一樣沒有輸出,因為被導向剪貼簿裡面,立馬貼出來看看結果,於是我們就會得到 一堆亂碼
複製回剪貼簿編碼錯誤

果然,怎麼來就要怎麼回去,加上編碼讓他轉回去 Big5 ,調整一下指令

powershell get-clipboard | decode | lines | split column --regex "[:,]" | to csv -s "\t" | encode big5 | clip

貼上 Excel ,打完收工
完成處理的結果

提示

可以透過 chcp 65001 ,讓 Console 編碼用 UTF-8 ,就可以不需要透過 decode 、 encode 做編碼轉換。
要修改 Console 的預設編碼,可以參考 這裡

安裝 pasteboard 使用 pbpaste & pbcopy

這個方法只差需要安裝程式,其他就跟 macOS 沒啥太大的差別(當然還是要處理編碼)。
安裝的部份我選擇用 Chocolatey ,細節請看 這裡

choco install pasteboard

剩下的就參考 昨天的指令 ,這裡就不多贅述了。

參考資料

macOS 如何在 Console 中使用剪貼簿的內容

· 閱讀時間約 3 分鐘
mrhihi.paul
Owner of this blog

前情提要

工作中,時常會複製一堆文字資料到剪貼簿中,再貼到文字編輯器上做後製,如果這沱資料有表格結構到也好處理,偏偏有時候,它們就是一整沱:

天空:藍色,白雲:飄動
海浪:翻滾,沙灘:溫暖
星星:閃爍,夜空:寧靜
風:輕拂,樹葉:搖曳
花:盛開,香氣:四溢
山:巍峨,雲霧:繚繞
河流:奔騰,清澈:見底
雨:滴落,傘下:細語
日出:曙光,晨曦:初現
城市:繁華,燈火:輝煌
備註

感謝 ChatGPT 友情贊助

如上逗號的前後都有一組 Key:Value 的資料,
想要把他們做成四欄資料放到 excel 上面去,有很多方式可以處理,
但我常常在想,如果可以複製進剪貼簿後,再貼出來,就變成我想要的樣子該有多好。

搭配 Nushell 試試

Nushell 可以用簡單的指令處理表格的資料,如果可以把剪貼簿的資料傳進 STDIO 讓 Nushell 處理,處理完後再複製回剪貼簿,感覺應該是個不錯的方式。 然後我找到了,在 macOS 下 pbpaste 跟 pbcopy 兩個好用的指令:

pbpaste: 把剪貼簿的內容貼到 STDIO
pbcopy: 把 STDIO 輸出複製回剪貼簿

於是:

pbpaste | lines | split column --regex "[:,]"

split-column

接著只要把 table 轉成 Tab 分隔,然後再複製回剪貼簿就大工告成

所以改一下語法

pbpaste | lines | split column --regex "[:,]" | to csv -s "\t" | pbcopy

這個步驟因為是輸出到剪貼簿上,所以 Console 上不會有輸出
data to excel

然後我們就可以快樂的貼到 Excel 上了:
data to excel

參考資料