看板 Linux 關於我們 聯絡資訊
各位大大午安 最近想要用sed來進行關鍵字的取代 取代的目標帶有` , 姑且就管他叫 `FLAG 指令是 sed -i "s^`FLAG^param_flag^g" file_name 但結果會跑出 Unmatched '`' 嘗試過這些也都不行 sed -i "s^``FLAG^param_flag^g" sed -i "s^\`FLAG^param_flag^g" sed -i "s^\\`FLAG^param_flag^g" sed -i "s/`FLAG/param_flag/g" sed -i "s/``FLAG/param_flag/g" sed -i "s/\`FLAG/param_flag/g" sed -i "s/\\`FLAG/param_flag/g" 想請問要怎麼準確處理 ` ... 謝謝 m(_*_)m -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.255.46.210 (新加坡) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1737271123.A.EDF.html
aeolus0829: 加個 \ ,例 \` 01/19 15:24
homer00: hi, a大, 我這邊一樣會得到 Unmatched '`' QQ 01/19 15:31
ShinHsin: sed "s/\`/~/g" filename 我用這樣是可以替換成~的 01/19 16:01
ShinHsin: 先不要加-i試跑看結果,你的其中一個情況有換成功 01/19 16:04
jkchang: sed -n "s/'FLAG/program_flag/g p" filename 01/19 16:25
jkchang: sed -i "s/'FLAG/program_flag/g" filename 01/19 16:26
jkchang: 如果是`,要加上\跳脫 01/19 16:34
rickieyang: https://i.imgur.com/Tdb3foR.png 01/19 16:53
rickieyang: 用 ' 包起來可以, 用 " 包起來不行. 01/19 16:54
jkchang: 如果你是用osx, 那 -i 後面加上"" 01/19 16:57
jkchang: sed -i "" "s/\`FLAG/param_flag/g" filename 01/19 16:58
homer00: 謝謝大大們熱心幫忙 不過都fail 我再研究看看還有什麼線 01/19 21:24
homer00: 索 或找IT討論看看 感激不盡 QQ 01/19 21:24
喔喔 剛剛發現這樣組合可以.. 記錄下來供參考 謝謝 : //平台是linux sed -i 's^`FLAG^flag_param^g' filename sed -i 's/`FLAG/flag_param/g' filename > uname -r 4.18.0-553.30.1.el8_10.x86_64 > cat /etc/os-release Rocky Linux 8.8 (Green Obsidian) 不過想寫到alias似乎又會卡關.. : alias repflag ' sed -i 's^`FLAG^flag_param^g' '
rickieyang: alias repflag "sed -i 's^`FLAG^flag_param^g'" 01/20 00:22
rickieyang: 不知道 sed 用 ^ 分隔有什麼好處, 不過 ^ 在 RE 有特 01/20 00:23
rickieyang: 別意義, 建議改別的符號。 01/20 00:23
理解 謝謝您 有時候想取代的東西有/, 像是A/B/C/D 然後懶得用 s/A\/B\/C\/D/A B C D/g 就會改用 s^A/B/C/D^A B C D^g //不過想取代的東西在line開頭, 得用^來標定的時候, 就還是得用s///g 不過上述alias我改成這樣也是不行QQ alias repflag ' sed -i 's/`FLAG/flag_param/g' ' 然後改這樣又回到標題那個老問題.. alias repflag ' sed -i "s/`FLAG/flag_param/g" ' ※ 編輯: homer00 (220.255.46.210 新加坡), 01/20/2025 06:58:21
rickieyang: 外面用 "", sed 裡面用 ' ' 01/20 10:05
rickieyang: https://i.imgur.com/8rhQkCW.png 01/20 11:12
rickieyang: 反過來也可以, 看樣子 ` 擺在 "" 裡就要 \ 01/20 11:16
rickieyang: alias repflag='sed -e "s/\`FLAG/flag_param/g"' 01/20 11:16