grep regex检查行是否包含子域

时间:2018-07-28 07:46:30

标签: regex string ubuntu search grep

我有一个包含域名的文件。我想搜索并删除用于子域的行。子域包含多个点(。)。例子: 子域:ab.cd.fgab.cd.fg.hi。 完整域包含一个点:ab.cd

我不确定我的正则表达式是否正确,尽管点数很多,仍会捕获任何子域:

grep '.\..(\..)+' myfile.csv

以上是我尝试搜索包含子域的行的尝试。如何删除它们并将新过滤的结果保存到新文件中?

样本输入:

ab.cd.fg
ab.cd
ab.cd.fg.hi.jk

输出应该是从具有子域的行清除的文件,子域是具有一个点的行。

ab.cd

1 个答案:

答案 0 :(得分:0)

这可以完成工作:

grep -P '^[^.]+\.[^.]+$' input_file

哪里

  • -P:perl正则表达式
  • ^:行首
  • [^.]+:1个或多个非点字符
  • \.:一个点
  • [^.]+:1个或多个非点字符
  • $:行尾