作者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/cn.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