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