有多少文本會改動,在使用 sed 的時候我們來看這么兩個問題: 第一個問題是有多少人文本會匹配,第二個問題是從哪里開始匹配。
回答是: 正則表達式可以匹配整個表達式的輸入文本中最長的,最左邊的子字符串。除此之外,匹配的空 (null) 字符串,則被認為是比完全不匹配的還長。
echo syx is a good body | sed 's/syx/zsf/'
使用固定字符串sed
可以使用完整的正則表達式。但是應該知道” 從最長的最左邊” 規(guī)則的重要性。echo Tolstoy is worldly | sed 's/T.*y/Camus/'
Camus
很明顯,我們只想要匹配 Tolstoy,但是由于匹配會擴展到可能的最長長度的文本量,所以出現(xiàn)了這樣的結果。
這就需要我們精確定義:
echo Tolstoy is worldly | sed 's/T[[:alpha:]]*y/Camus/'
Camus is worldly
在文本查找中,有事喊可能會匹配到 null 字符串,而在執(zhí)行文本替代時,也允許插入文本。
ehco abc | sed 's/b*/l/'
labc
ehco abc | sed 's/b*/l/g'
lalcl
請留意,b*shi 如何匹配 abc 的前面與結尾的 null 字符串。