我有文本文件,其中包含以下数据:
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
答案 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