使用 sed 删除两个字符之间的所有内容

使用 sed 删除两个字符之间的所有内容

我正在尝试删除一个字符串,包括一个字符“_”到另一个字符“:”,但不包括该字符。所有内容都在同一行上。

我有具有不同名称和编号的文件,例如包含:

some_name_123:456(other_name_123:456,some_word_567:765, and so on...

我试图删除_123,每个文件中都有不同的模式,所以我最终得到:

some_name:456(other_name:456,some_word:765,

但是,我似乎只能删除从第一个_:最后一个的所有内容some_:456,但这并不是我想要的。以下是我目前得到的结果。有人能帮忙吗?

sed -e 's/\(+\).*\(@\)/\1\2/'

这在第一次发生时给出了我想要的结果,但没有给出其余发生的结果:

sed 's/_[^_]\+:/:/'

答案1

echo "some_name_123:456" | sed 's/\(.*\)_.*:\(.*\)/\1:\2/g'

给出

some_name:456

这就是你想要的吗?

相关内容