sed删除两个特定字符之间的失败

时间:2018-09-10 16:27:52

标签: bash sed

我在foo.txt

如果我这样做cat get.txt,我就会关注

SCALARS md.100 int

我想删除.100md之间的int,并输出为

SCALARS md int

如何更改它?

我尝试过sed "s/md.*int //g" get.txt

什么都不会改变。我将其作为输出

SCALARS md.100 int

有人能解释为什么它不起作用吗?什么是最好的方法?

2 个答案:

答案 0 :(得分:2)

sed 's/md\..* int/md int/' get.txt

它将md.,任何字符(.*)和int(带有前导空格)替换为md int


请参阅:The Stack Overflow Regular Expressions FAQ

答案 1 :(得分:0)

您的sed表达式比您想要的更匹配。另外,如果要写入其他文件,则需要提供要解析的文件,然后将输出通过管道传输到另一个文件。以下应该起作用:

sed -e 's/\.100//g' foo.txt > bar.txt

将删除“ .100”并写入新编辑的文件“ bar.txt”,而保持“ foo.txt”不变。