繁体   English   中英

从文件名中提取域

[英]Extract domain from file name

我得到了一个zip文件,其中包括4个具有以下命名约定的文件:

2018.foo.abc.example.co.uk.20183740273
2018.foo.bcd.example.co.uk.20183740474
2018.foo.dce.example.co.uk.20183749769
2018.foo.def.example.co.uk.20183746483

我的任务是从任何文件名(任何,因为所有域都相同)中提取域,并将其存储到bash变量中。 这些文件名仅是示例。 关键是领域。 分割发生在第三个点之后。

如果所有文件都使用相同的约定命名,则可以使用一些基本的AWK查找答案:

awk -F'.' 'print{$3,$4,$5}' <filename>

-F =字段定界符。 在这种情况下,它是一个. 现在,我们已经将文本分解成本质上是数据列,并在上进行了拆分. ,我们告诉AWK要打印哪些字段。

或者您可以使用cut:

cut -d '.' -f3-5 <filename>

与AWK相同的原理,只是执行方法不同。

如果要提取具有不同字段数的域(例如example.co.ukexample.com ),则可以使用sed

sed 's/\([^.]*.\)\{3\}//;s/.[0-9]*$//' filename

sedcut的组合,更易读:

sed 's/.[0-9]*$//' filename | cut -d '.' -f4-

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM