我想知道什麼是錯的,爲什麼後SED刪除第一個字符:替換模式
b="inst.;inst" ; echo $b | sed -e 's/\.;[^ ]/\n /' inst nst
期望輸出
inst
inst
感謝您事先的任何線索太多。
我想知道什麼是錯的,爲什麼後SED刪除第一個字符:替換模式
b="inst.;inst" ; echo $b | sed -e 's/\.;[^ ]/\n /' inst nst
期望輸出
inst
inst
感謝您事先的任何線索太多。
你的圖中的三個字符匹配。一段時間,一個分號和一些非空格字符。然後用兩個字符(換行符和空格)替換所有這三個字符。
所以你的模式匹配.;i
,你用\n
替換它。
您需要捕獲並重新插入該非空格字符。
在模式中使用\([^ ]\)
,使用\n \1
作爲替換。
您正在更換研究所,捕獲的第一個字符,並保留它,而不是,即
sed -e 's/\.;\([^ ]\)/\n \1/'
太感謝了,+1,但沒有選擇,因爲它沒有被解釋爲Etan所做的。 – 2014-11-06 16:37:30
或者只是改變你的命令爲b =「inst。; inst」; echo $ b | sed -e's /。;/\ n /' 替換。用換行符
這隻適用於沒有任何'; '他不想替換的參賽作品。 – 2014-11-06 16:36:38
爲什麼在這種情況下[^]'(樣本)?這肯定是一個更復雜的案例的一部分,可能會出現一些空間(或其他)。 – NeronLeVelu 2014-11-06 17:14:19