我想只打印符合条件的行:“worde:”和“wordo;” 我到目前为止:
sed -n '/\([a-z]*\)\1e:\1o;/p;'
但它不太有用。 有人可以完善它并告诉我它的固定版本/我的错误是什么? (请注意,从来没有大写字母,因此为什么我没有在我的初始角色范围内打扰)
谢谢你,
答案 0 :(得分:3)
这将处理“worde:wordo;”的行(单词之间没有)出现:
sed -n '/\([a-z]*\)e:\1o;/p;'
如果你需要允许单词之间的字符,你需要这样的东西:
sed -n '/\([a-z]*\)e:.*\1o;/p;'
答案 1 :(得分:0)
我对您的问题的解释是,您希望匹配同时包含worde:
和wordo;
sed -n '/worde:/{/wordo;/p}' infile
-n
参数阻止sed打印模式空间(infile
),第一个正则表达式匹配,然后控制流进入块,如果正则表达式不匹配,则忽略该行。在块内,如果第二个正则表达式匹配,则打印该行。
答案 2 :(得分:0)
使用交替的一种方式:
sed -n '/word\(e:\|o;\)/ p' infile
答案 3 :(得分:0)
是否需要使用捕获组?我没有他们。
$ sed -n '/[\w]*[oe][:;]/p'
[\w]*
- 匹配任何单词字符。 (如果你真的只想要[a-z]
,那就换掉吧
回来了)[oe]
- 这些单词字符必须以e
或结尾
o
[:;]
- 然后有:
或;
答案 4 :(得分:0)
这可能对您有用:
sed '/^\(.*\)[eE]:\s*\1[oO];/!d' file