[英]Make matching example from sed manual working
我在info sed
找到了一個例子,說明如下:
'^\(.*\)\n\1$'
This matches a string consisting of two equal substrings separated
by a newline.
嘗試以這種方式實現它沒有返回任何匹配的行:
echo -e "test\ntest" | sed -n '/^\(.*\)\n\1$/p'
echo -e "test\ntest" | sed -n 's/^\(.*\)\n\1$/\0/p'
我使用的 sed 版本是 4.2.2。
請建議可以測試此示例的方式。
這可能對你有用(GNU sed 和 bash);
<<<$'test\ntest' sed -En 'N;s/^(.*)\n\1$/\1 == \1/p;s/^(.*)\n(.*)$/\1 != \2/p'
將輸入的第二行附加到第一行,如果兩行相同,則用line1 == line2
替換它們,否則用line1 != line2
替換它們。
注意兩個替換都試圖匹配至少一個換行符,如果第一個替換成功,第二個就不能。 同樣,如果第一個替換從未發生,則第二個替換必須發生。
為了使示例工作,我將不得不使用N將在模式空間中再讀取一行並允許匹配\\n 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.