替换从“_”开始(包括“_”)到排除“:”脚本的字符串?

替换从“_”开始(包括“_”)到排除“:”脚本的字符串?

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

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

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

我试图删除 _123,_567,这是每个单词后不同的模式,所以我最终得到:

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

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

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

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

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

答案1

使用全局g标志:

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

看:s 命令

相关内容