作者yellowfishie (喵喵喵喵~~~)
看板NTUGIEE_EDA
標題[問題] perl 取代字串
時間Thu Jun 15 12:47:04 2006
將 file.cpp 的 def 取代成 abc,
perl 的語法為:
perl -pi -e 's/def/abc/g' file.cpp
可以正確的將 def->ppp 轉成 abc->ppp,
但卻也將 define 取代成 abcine 了。
要如何正確的處理呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.48.60
1F:推 ijb:如果是用vim的話,你可以用:1,$ s/\<str_a\>/str_b/g 06/15 14:03
2F:→ ijb:exactly str_a的字就會被str_b的取代 06/15 14:04
3F:→ ijb:如果記得沒錯的話,好像也可以用在C-shell的script 06/15 14:05
4F:→ ijb:只是你們可能一定要用perl,那就&^%$$# 06/15 14:06
5F:推 moonshade:sed 就可以了...不用用到perl 06/15 14:28
6F:→ moonshade:如果只要換define 那就換define->abcine... 06/15 14:29
7F:→ moonshade:lab 的lex & yacc 裡面有講Regular expression 06/15 14:30
8F:推 yellowfishie:我有試 's/def[^a-z]+/abc/g', 它會把def後面弄不見 06/15 15:25
9F:推 yellowfishie:vim 很好用, 可是不能寫到程式裡 :P 看一下sed 好了 06/15 15:29
10F:推 yellowfishie:ok!! sed -e '/def[^a-z]/s/def/abc/' file.cpp 06/15 15:47
※ 編輯: yellowfishie 來自: 61.220.92.244 (06/15 15:47)
11F:推 moonshade:你要留他你要用default變數,好像是$1 $2 之類的... 06/15 16:29
12F:→ moonshade:你要查個書... perl 會把regx找到符合的存成變數... 06/15 16:30
13F:推 yellowfishie:sed 's/\([^a-z]\)def\([^a-z]\)/\1abc\2/g' file 06/15 23:29
14F:→ yellowfishie:謝謝 ^^ 06/15 23:29
15F:推 ijb:嗯.上面提到可用在c-shell script的就是sed這個指令.... 06/17 10:49
16F:→ ijb:語法跟第一行po的一樣,exactly的字用 \< \>把它括號起來 06/17 10:50
17F:→ ijb:呃 = = 現在才看到最後一行,人家都解決了 我還回這麼多@@ 06/17 10:52
18F:推 moonshade:sed 不是c-shell的指令,sed是gnu 的東西 06/19 00:00