shell 如何使用sed将文件中所有出现的-替换为_?它不应影响-周围的文本

5gfr0r5j  于 2023-04-21  发布在  Shell
关注(0)|答案(1)|浏览(108)

我对bash没有什么经验
该文件由如下文本组成:

"text_description-1": "Some text".

我只想在冒号左边的文本中用'_'替换'-'。右边的文本可能也有'-',但不应该被替换。
我尝试了以下方法(我用的是Mac),

sed -i '' 's/[a-zA-Z0-9_"]*-[a-zA-Z0-9"]*:/[a-zA-Z0-9_"]*_[a-zA-Z0-9"]*:/g' file.txt

但它替换了所有与

[a-zA-Z0-9_"]*_[a-zA-Z0-9"]*:

我只想替换'-',而不是所有与正则表达式匹配的文本。我该怎么做?

kpbpu008

kpbpu0081#

我会怎么做:

sed -E 's/-(.*:)/_\1/' file
"text_description_1": "Some text".

相关问题