regex - 从 sed 手工制作匹配示例
问题描述
我找到了一个例子来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
。
注意这两个替换都试图匹配至少一个换行符,如果第一个替换成功,第二个不能。同样,如果第一次替换从未发生过,则第二次替换必须发生。
推荐阅读
- asp.net-mvc - IIS 10 上的并发文件上传永远不会成功并冻结用户会话
- javascript - 为什么 mobx 中的 es6 装饰器不能正常工作?
- c# - 将 csv 导入 mysql 数据库 - 如何读取带有波兰语字符的文件?
- wget - 在 opam 中跳过 wget 证书检查
- javascript - insertHTML 在 contentEditable div 中插入 Div 不会使其可拖动或调整大小
- c# - 用户名或密码不正确-8009030C:LdapErr:DSID-0C090579,注释:AcceptSecurityContext错误,数据52e,v3839
- javascript - 如何将 ReadableStream 转换为 Readable
- java - Java 客户端使用 JMS 连接到 IBM MQ 通道的 TCP/IP 抛出错误
- python - 带有 __new__ 的单例模式在 python 2 中不起作用
- sql - 查询以按天计算失败测试用例和分组,但缺少“0”