echo "abc:cde;123:456" | sed -r 's/([^:]+)(;.*:)([^:]+$)/\3/'
輸出結果是abc:456
然后echo "abc:cde;123:456" | sed -r 's/([^:]+)(;.*:)([^:]+$)/\3\3\3/'
輸出結果是abc:456456456
這個是為什么?按理解第3個分組應該是456吧?
uj5u.com熱心網友回復:
這分組就不對吧,([^:]+)是abc (;.*:)是 ;123: ([^:]+$)是456 ,那:cde呢uj5u.com熱心網友回復:
然后你這么分,可能就沒把 abc: 算進去了, cde是分組1 ;123:是分組2 456是分組3uj5u.com熱心網友回復:
嗯,問題是單獨輸出一次第三組是abc:456,但是連續輸出3次第三組就變成abc:456456456;這里有點難理解,([^:]+$)匹配應該是非:吧,這里應該是匹配456吧?uj5u.com熱心網友回復:
你這么分組,就把abc排除在外,cde是分組1 ;123:是分組2 456是分組3,你用sed替換,就是把cde;123:456提換成組3,也就是456,最后結果不就是abc:456,然后第二條,把cde;123:456替換成3個組3,結果就是abc:456456456了
uj5u.com熱心網友回復:
嗯,明白了,自己理解錯了,謝謝轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/100552.html
標籤:專題技術討論區
上一篇:KVM虛擬機開機狀態下怎么切換網卡到其他ovs交換機
下一篇:libssh2編譯問題
