繁体   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