sed删除“。”之后的所有内容。在文件中使用*命令?

时间:2013-09-03 22:04:04

标签: python bash sed

我有以下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 

3 个答案:

答案 0 :(得分:18)

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

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

您尝试's/\.*//',这是“零或更多文字点”,这与“字面点后跟零或更多任何内容”不同,即's/\..*//'。我还添加了$以获得良好的衡量标准。

答案 1 :(得分:6)

这是最简单的:

sed "s/\..*//"

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

答案 2 :(得分:1)

这似乎有效:

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

我很想知道在bash和python中如何做到这一点,如果有人不介意分享?

谢谢!