在Linux中的字符之间获取字符串

时间:2014-04-23 11:09:27

标签: linux bash shell

我有文本文件,其中包含以下数据:

asd.www.aaa.com
abc.abc.co 
look at me
asd.www.bbb.com
bzc.bzc.co
asd.www.ddd.com
hello world
www.eee.com
xx.yy.z

我想要被"asd.www.[i want this string].com"包围的字符串。

所以我的输出将是:

aaa
bbb
ddd

2 个答案:

答案 0 :(得分:4)

尝试:

grep -Po '^asd\.www\.\K[^.]*(?=\.com)' file

如果asd可能位于字符串的中间,请删除第一个^

可能存在其他极端情况,例如贪婪匹配等,这取决于您的源输入。

答案 1 :(得分:2)

我最初建议cut,但我误解了你的问题。所以我打算用awk发布替代方案。您正在寻找文本输入的第三列,其中总共有四列。

less file.txt | awk -F '.' '{ if ($4 != "") print $3 }'

如果列.为空,则会将您的字符串拆分为$3,并仅打印列$4。根据您的示例文本,这应该产生以下内容:

aaa
bbb
ddd