简单地说:我的命令问题应该打印出包含这两个表达式中的任何一个的行:" king" ," king' s儿子" 即可。这是我到目前为止的地方:
public class LoadablePO extends LoadableComponent<LoadablePO> {
...
/**
* Force a reload (by circumventing the call of isLoaded()).
*/
public final void reload() {
this.load();
}
/**
* Load the web page.
*/
@Override
protected final void load() {
driver.get(...);
}
...
}
它确实有效,但它包括&#34;国王&#34; 不应该发生。
添加 grep -w "king's son\|king" frog.txt
不起作用,因为它也会删除&#34;国王的儿子&#34; 。
我在Virtual Box Machine上安装了Ubuntu 32位系统。
答案 0 :(得分:3)
-w
无济于事,因为king
被视为king's
中的一个字,因为'
是一个非字字符。
使用:
grep -E "([[:space:]]|^)king('s son)?([[:space:]]|$)" frog.txt
如果grep
有PCRE选项,则使用外观:
grep -P "(?<=[[:space:]]|^)king('s son)?(?=[[:space:]]|$)" frog.txt
答案 1 :(得分:1)
grep -E "([[:space:]]|^)king('s son)?([[:space:]]|$)" frog.txt
例如,如果frog.txt
包含
kingb # no match
king's # no match
king-bee # no match
breaking # no match
king's hello # no match
king's sonth # no match
king # match
a king bee # match
king bee # match (with a TAB)
king's son # match
然后上面的命令返回
king # match
a king bee # match
king bee # match (with a TAB)
king's son # match
答案 2 :(得分:1)
这可以做到:
grep -E "(^|[ \t])(king|king's son)([ \t]|$)" frog.txt
它使用组(^|[ \t])
和([ \t]|$)
来匹配单词分隔符或行的开头/结尾。
答案 3 :(得分:0)
grep -w "king's son\|king$" frog.txt
答案 4 :(得分:0)
以下行可能适用于您的情况。
grep -w "king's son\|king$\|king\ " frog.txt
结果是:
king's son #match
king #match
king's hello #not match