- 論壇徽章:
- 0
|
- awk '{match($0,/value="[^"]*"/);value=(RSTART)?substr($0,RSTART+7,RLENGTH-8):"";print value}'
復(fù)制代碼
match是用來測試是否匹配的,如果有匹配的,那么RSTART就是匹配的起始字符,RLENGTH就是匹配的長度
substr是用來取子字符串的,因?yàn)樾枰裿alue=""這8個(gè)字符去掉,因此需要用RLENGTH-8,因?yàn)樾枰ヅ涞膙alue的起始位置是"中間的內(nèi)容,因此需要將RSTART+7
我是用gawk測試的,不過match和substr函數(shù)很多awk都有(我用busybox的awk和mawk測試也是可行的)
我是對整個(gè)行進(jìn)行匹配的,如果不想對整個(gè)行進(jìn)行匹配(比如$1),那么把$0替換成$1就可以了。
解釋:
match($0,/value="[^"]*"/) 對內(nèi)容進(jìn)行匹配,正則表達(dá)式是 value="[^"]*"/
value=(RSTART)?substr($0,RSTART+7,RLENGTH- :"" 先判斷是否有匹配,如果沒有,就用空值,否則,就取子串 賦給變量value
[ 本帖最后由 springwind426 于 2008-6-10 21:14 編輯 ] |
|