我有以下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
答案 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中如何做到这一点,如果有人不介意分享?
谢谢!