包含特定字符串的单词,使用grep或sed命令?

5

示例文件:

blahblah 123.a.site.com   some-junk
yoyoyoyo 456.a.site.com   more-junk
hihohiho 123.a.site.org   junk-in-the-trunk
lalalala 456.a.site.org   monkey-junk

我想要在每行的中间用grep命令找出所有包含共同部分a.site的域名,但是我不知道如何做到只返回域名而不是整行?

也许需要使用sed或者正则表达式,因为简单的grep命令可能不够。

2个回答

11

你可以这样做:

grep -o '[^ ]*a\.site[^ ]*' input
或者
awk '{print $2}' input
或者
sed -e 's/.*\([^ ]*a\.site[^ ]*\).*/\1/g' input

谢谢,第一个正是我所需要的。这也给了我一些材料可以去谷歌搜索,所以双倍感谢 :) - jwbensley

3

尝试使用以下方法来查找该位置的内容

  $ sed -r "s/.* ([0-9]*)\.(.*)\.(.*)/\2/g"

 [0-9]* - For match number zero or more time.
 .*     - Match anything zero or more time.
 \.     - Match the exact dot.
 ()     - Which contain the value particular expression in parenthesis, it can be printed using \1,\2..\9. It contain only 1 to 9 buffer space. \0 means it contain all the expressed pattern in the expression.

如果您能稍微解释一下您的答案,对于像我这样的新手来说会更好理解一些 :) - jwbensley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接