[問題] Unmatched '`'

看板Linux作者 (社畜仔)時間3周前 (2025/01/19 15:18), 3周前編輯推噓8(8012)
留言20則, 5人參與, 3周前最新討論串1/1
各位大大午安 最近想要用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

01/19 15:24, 3周前 , 1F
加個 \ ,例 \`
01/19 15:24, 1F

01/19 15:31, 3周前 , 2F
hi, a大, 我這邊一樣會得到 Unmatched '`' QQ
01/19 15:31, 2F

01/19 16:01, 3周前 , 3F
sed "s/\`/~/g" filename 我用這樣是可以替換成~的
01/19 16:01, 3F

01/19 16:04, 3周前 , 4F
先不要加-i試跑看結果,你的其中一個情況有換成功
01/19 16:04, 4F

01/19 16:25, 3周前 , 5F
sed -n "s/'FLAG/program_flag/g p" filename
01/19 16:25, 5F

01/19 16:26, 3周前 , 6F
sed -i "s/'FLAG/program_flag/g" filename
01/19 16:26, 6F

01/19 16:34, 3周前 , 7F
如果是`,要加上\跳脫
01/19 16:34, 7F

01/19 16:53, 3周前 , 8F

01/19 16:54, 3周前 , 9F
用 ' 包起來可以, 用 " 包起來不行.
01/19 16:54, 9F

01/19 16:57, 3周前 , 10F
如果你是用osx, 那 -i 後面加上""
01/19 16:57, 10F

01/19 16:58, 3周前 , 11F
sed -i "" "s/\`FLAG/param_flag/g" filename
01/19 16:58, 11F

01/19 21:24, 3周前 , 12F
謝謝大大們熱心幫忙 不過都fail 我再研究看看還有什麼線
01/19 21:24, 12F

01/19 21:24, 3周前 , 13F
索 或找IT討論看看 感激不盡 QQ
01/19 21:24, 13F
喔喔 剛剛發現這樣組合可以.. 記錄下來供參考 謝謝 : //平台是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' '

01/20 00:22, 3周前 , 14F
alias repflag "sed -i 's^`FLAG^flag_param^g'"
01/20 00:22, 14F

01/20 00:23, 3周前 , 15F
不知道 sed 用 ^ 分隔有什麼好處, 不過 ^ 在 RE 有特
01/20 00:23, 15F

01/20 00:23, 3周前 , 16F
別意義, 建議改別的符號。
01/20 00:23, 16F
理解 謝謝您 有時候想取代的東西有/, 像是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

01/20 10:05, 3周前 , 17F
外面用 "", sed 裡面用 ' '
01/20 10:05, 17F

01/20 11:12, 3周前 , 18F

01/20 11:16, 3周前 , 19F
反過來也可以, 看樣子 ` 擺在 "" 裡就要 \
01/20 11:16, 19F

01/20 11:16, 3周前 , 20F
alias repflag='sed -e "s/\`FLAG/flag_param/g"'
01/20 11:16, 20F
文章代碼(AID): #1dZATJxV (Linux)
文章代碼(AID): #1dZATJxV (Linux)