2023年5月9日 星期二

Linux Shell Commands: awk, sed 對檔案內容的應用

因為在Linux Mint 看到有一個 driver-manager,離開後到 Ubuntu 20.04.6 想要也安裝一個,結果官方倉儲沒收入!

於是就找類似的,結果找到 kubuntu-driver-manager,我想它也是 ubuntu 的後代,試試或許可以用。

安裝完畢後執行,結果系統說「 可安裝,但無法執行 」,我真的傻眼了,第一次遇到這狀況!於是它末尾又提示可安裝 kubuntu-settings-desktop,我就想這二個軟體除了前面都是 kubuntu 之外,有什麼親戚關係嗎?

二者之間有無關係我不知道,結果我就「慘慘地」給它安裝了下去。結果嘛...,想當然執行時也沒反應,下場也是「慘慘地」啦,哈哈哈〜😁😆😅

安裝時我看畫面提示要安裝了一大堆軟體、套件,大約瞄了一下有500多MB,真多!桌面軟體真不是蓋的。

現在二個軟體都無法執行,想要除錯,我也沒那麼多時間,必須開始收攤了!須把這些沒用垃圾全部清除掉才行,結果嘛...,也仍是「慘慘地」啦,唉〜〜😓😭

把二個主軟體移除時,竟然沒有之前跟著安裝的一大票相依軟體、套件被同時移除,它們不是相依的嗎?我金地、金地、金地傻眼了!!😲🙄😱(重要的話須重覆三遍)

於是,偶就趕快把終端機中,安裝時暫留的的字串複製下來,想要一一手動把各個軟體、套件全刪除掉,但一看到資料太多,我也愣住了〜🤔🤔。於是就有了本篇文章應用 Shell 指令處理檔案內容的結果出現!😇

********************
正文開始
********************
◆ 刪除目標檔案每列開頭前三個字元
語法:sed 's/^...//' /trash/m.txt > /trash/command.txt

樣本列:
124libkf5waylandserver5 amd64 4:5.68.0-0ubuntu1 [245 kB]
125libkf5syntaxhighlighting-data all 5.68.0-0ubuntu1 [52.1 kB]

執行結果:
libkf5waylandserver5 amd64 4:5.68.0-0ubuntu1 [245 kB]
libkf5syntaxhighlighting-data all 5.68.0-0ubuntu1 [52.1 kB]

------
◆ 把目標檔案每列第一個空白處及之後字串,全部刪除(被「 "" 」取代)
語法:awk '{print "" $1}' /trash/n.txt > /trash/command.txt

樣本列:
libkf5waylandserver5 amd64 4:5.68.0-0ubuntu1 [245 kB]
libkf5syntaxhighlighting-data all 5.68.0-0ubuntu1 [52.1 kB]

執行結果:
libkf5waylandserver5
libkf5syntaxhighlighting-data

------
◆ 把目標檔案每列開頭皆插入字串:"sudo apt autoremove "
語法:awk '{print "sudo apt autoremove " $0}' /trash/p.txt > /trash/command.txt

樣本列:
libkf5waylandserver5
libkf5syntaxhighlighting-data

執行結果:
sudo apt autoremove libkf5waylandserver5
sudo apt autoremove libkf5syntaxhighlighting-data

------
當全部資料前端都已插入刪除暨刪除依賴語法之後,再來就是 sh 上場表演的時刻!
執行: sh /trash/command.txt
過程:
  初時反復要按 (Y/n) 的詢問,後面就一律出現xxx沒有安裝,然後直接跳過,不必人參與。最後結果檢查,算是勝利了😁😂,揮汗拭額〜〜😅😜