19

我有以下data.txt:

 95 flour.
 47 water.s
 etc..

我需要删除.文件中句点 ( ) 之后的所有内容,以产生如下内容:

 95 flour
 47 water
 etc..

我尝试使用这些 sed 命令但没有成功,这会产生一个空白文档:

sed "s/'.*//" data.txt > cleaned.txt 
sed 's/\.*//' data.txt > cleaned.txt 
4

3 回答 3

33

使用.反斜杠转义 以获得文字.,或使用方括号定义字符类:

sed 's/\..*$//' data.txt > cleaned.txt
sed 's/[.].*$//' data.txt > cleaned.txt

你试过's/\.*//'了,它是“零个或多个文字点”,它不同于“文字点后跟零个或多个任何东西”,即's/\..*//'. 我还添加了一个$很好的措施。

于 2013-09-03T22:07:51.957 回答
12

这是最简单的:

sed "s/\..*//"

我认为这是最好的方法之一(比纯 bash 或 Python 更好)。

于 2013-09-03T22:07:09.493 回答
1

这似乎有效:

sed "s/[.].*//" data.txt > cleaned.txt

如果有人不介意分享,我很想知道如何在 bash 和 python 中交替完成此操作?

谢谢!

于 2013-09-03T22:04:51.223 回答