作者homer00 (社畜仔)
看板Linux
標題[問題] Unmatched '`'
時間Sun Jan 19 15:18:40 2025
各位大大午安
最近想要用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://webptt.com/m.aspx?n=bbs/Linux/M.1737271123.A.EDF.html
1F:推 aeolus0829: 加個 \ ,例 \` 01/19 15:24
2F:→ homer00: hi, a大, 我這邊一樣會得到 Unmatched '`' QQ 01/19 15:31
3F:推 ShinHsin: sed "s/\`/~/g" filename 我用這樣是可以替換成~的 01/19 16:01
4F:→ ShinHsin: 先不要加-i試跑看結果,你的其中一個情況有換成功 01/19 16:04
5F:→ jkchang: sed -n "s/'FLAG/program_flag/g p" filename 01/19 16:25
6F:→ jkchang: sed -i "s/'FLAG/program_flag/g" filename 01/19 16:26
7F:→ jkchang: 如果是`,要加上\跳脫 01/19 16:34
9F:→ rickieyang: 用 ' 包起來可以, 用 " 包起來不行. 01/19 16:54
10F:推 jkchang: 如果你是用osx, 那 -i 後面加上"" 01/19 16:57
11F:→ jkchang: sed -i "" "s/\`FLAG/param_flag/g" filename 01/19 16:58
12F:→ homer00: 謝謝大大們熱心幫忙 不過都fail 我再研究看看還有什麼線 01/19 21:24
13F:→ 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' '
14F:推 rickieyang: alias repflag "sed -i 's^`FLAG^flag_param^g'" 01/20 00:22
15F:→ rickieyang: 不知道 sed 用 ^ 分隔有什麼好處, 不過 ^ 在 RE 有特 01/20 00:23
16F:→ 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
17F:推 rickieyang: 外面用 "", sed 裡面用 ' ' 01/20 10:05
19F:推 rickieyang: 反過來也可以, 看樣子 ` 擺在 "" 裡就要 \ 01/20 11:16
20F:→ rickieyang: alias repflag='sed -e "s/\`FLAG/flag_param/g"' 01/20 11:16