如何从文件中删除不包含点的行?

如何从文件中删除不包含点的行?

我有一个文件,其中包含包括 URL 在内的数据。但其中有几行不是 URL。如何使用 Ubuntu 终端命令删除它们?

以下是供参考的示例文件:样本数据

com.blendtuts/S
°=
com.blengineering.www/:http
±=

我想要的输出是:

com.blendtuts/S
com.blengineering.www/:http

多余的线条没有任何点。因此,我想删除没有点的线条

答案1

一种方法是sed

sed '/\./!d' file
  • /\./匹配文字点(用\because 转义,否则.匹配任何字符)
  • !d删除除匹配模式之外的所有内容

如果要就地编辑文件,请-i在测试后添加到命令中。(您也可以添加.bak-i标志sed -i.bak ...以创建文件的本地备份。)

sed -i '/\./!d' file

答案2

你可以将所有内容以点开头放入一个新文件中:

grep "\."  file > newfile

这样您就可以保存旧文件。

答案3

或者保留包含

sed -ni.bak '/\./p' infile

答案4

使用 perl:

perl -i -ne 'print if /\./' /path/to/file

相关内容