簡體   English   中英

從 sed 手動工作中制作匹配示例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM