看板 Linux 關於我們 聯絡資訊
我手邊有一個Archlinux pacman安裝清單如下 : ---------------------------------------------------------------- #install.txt atom #(see: C1. Configure Atom editor) code #(see: C4. Configure vscode that like atom editor) wget p7zip networkmanager network-manager-applet #(attach to GUI setting) gnome-nettool #(GUI network manager) chromium rsync # (rsync is a good tool for backup on the local and the remote, # It can implement copy and exclude some files or directories: ---------------------------------------------------------------- 我要使用sed正規劃處理把#註解清除 查了一下sed的用法 寫個shell如下 : ---------------------------------------------------------------- #install.sh pacman_cmd="pacman -S " install_cmd=$(sed -e "s/#.*//" -e "s/^/${pacman_cmd}/" $1) echo -e "\e[1;32m${install_cmd}\e[0m" ---------------------------------------------------------------- 最後echo那段是顯示sed之後結果 執行的指令為 : ---------------------------------------------------------------- sh install.sh install.txt ---------------------------------------------------------------- 期望的輸出如下 : ---------------------------------------------------------------- pacman -S atom pacman -S code pacman -S wget pacman -S p7zip pacman -S networkmanager pacman -S network-manager-applet pacman -S gnome-nettool pacman -S chromium pacman -S rsync ---------------------------------------------------------------- 但實際的結果如下 : ---------------------------------------------------------------- pacman -S atom pacman -S code pacman -S wget pacman -S p7zip pacman -S networkmanager pacman -S network-manager-applet pacman -S gnome-nettool pacman -S chromium pacman -S rsync pacman -S pacman -S ---------------------------------------------------------------- 多了2個空的pacman -S 我知道是最後兩行的#沒被消掉 但是sed應該有把它消掉呀QQ 其他都正確 到這邊就不會處理了orz 還請板上高手幫忙 謝謝! -- 我老婆-子瑜,不服出來灣阿 https://imgur.com/sCghzuF https://imgur.com/JvAE0Qu https://imgur.com/k9PCODr https://imgur.com/CZmFmeq https://imgur.com/S7FgYgF -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.246.112.102 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1540217296.A.0F1.html
Gold740716: 你把該行清空了,但行首 ^ 還是存在,還是取代成功 10/22 22:22
dzwei: 所以要把行首^取代為空白 多做這個步驟? 10/22 22:34
dzwei: 我還在想這個要怎麼寫orz 10/22 22:34
rickieyang: sed -e "s/#.*//" -e "/^$/d" -e "s/^/${...}/" 10/22 22:35
rickieyang: sed -e "/^#/d" -e "s/#.*//" -e "s/^/${...}/" 10/22 22:37
請問 "s/^/${...}/" 這段是什麼意思
rickieyang: 還有, 其實有正規表示式版 (RegExp) 10/22 22:38
rickieyang: 一是刪掉 #.* 後刪除空白行; 二是先把 # 開頭的行刪掉 10/22 22:41
rickieyang: 不過這類用途應該只會用一兩次, 其實沒必要寫成script 10/22 22:46
rickieyang: 隨便 grep / awk 兜一兜就好了. (預期套件名沒有空白) 10/22 22:47
rickieyang: cat txt |egrep -v "^#|^$" |awk '{print "ooxx "$1}' 10/22 22:49
rickieyang: 另外, 空白行 ^$ 可以考慮改用 ^\s*$ 10/22 22:59
因為我會把它放在網頁 當作一種備忘錄 方便之後的安裝 順便學習正規化工具~~~ ※ 編輯: dzwei (111.246.112.102), 10/22/2018 23:13:19
rickieyang: ${...} = ${pacman_cmd}, 太長推文擺不下 @@ 10/22 23:15
好 大致了解了 感謝您~~ ※ 編輯: dzwei (111.246.112.102), 10/22/2018 23:23:52 已經更新上去我的筆記了 https://tinyurl.com/ycnkj395 這種一次安裝多個pacman package的方式在第六點 我也有附上參考連結在這篇文章 謝謝各位大大的幫忙 ※ 編輯: dzwei (111.246.112.102), 10/23/2018 01:54:47