我浏览了一些问题,但他们没有满意地回答我的问题。
我需要打印与模式完全匹配的单词,而不是包含该单词的行。例如:
我正在回家。心所在的地方就是家。
所以当我用模式“home”搜索时,我应该得到
主页 主页
我明白那个 grep -o
会让我的任务更容易,但是 我的 grep
不支持该选项。所以我需要一些其他的解决方案。
我还需要完全匹配。因此,如果有一个单词,homeless
则不应在选择中选择它。
答案1
和谁玩perl
:
$ echo 'I am going home. Home is where heart is.' |
perl -lne 'for (split /\W+/) {print $& if /\bhome\b/i}'
甚至更短,改编自约瑟夫·R。下面评论(感谢他)
$ echo 'I am going home. Home is where heart is.' |
perl -lne 'print $& while /\bhome\b/ig'
结果:
home
Home
答案2
答案3
使用awk
:
echo "I am going home. Home is where heart is. I dont like Homework." | awk '{for(i=1;i<=NF;i++) {gsub(/[^a-zA-Z0-9]/,"",$i); if(match(tolower($i),/^(home)$/))print $i;}}'
输出:
home.
Home
答案4
printf %s\\n 'I am going home. Home is where the heart is.' |
sed 's/\([hH]ome\)*.\{,1\}/\1/g'
输出
首页首页