【发布时间】:2015-05-27 16:06:01
【问题描述】:
我尝试使用 bash 查找和替换项目。我可以使用sed 来抓取一些字符,但我想我可能用错了。
我基本上是在尝试删除“;”之后的字符以及 "," 之前,包括删除 ","
sed -e 's/\(;\).*\(,\)/\1\2/'
那是我用来代替它的东西。但是,它最终替换了中间的所有内容,所以我的输出结果如下:
cmd2="BMC,./socflash_x64 if=B600G3_BMC_V0207.ima;,reboot -f"
这是我需要替换的原文
cmd2="BMC,./socflash_x64 if=B600G3_BMC_V0207.ima;X,sleep 120;after_BMC,./run-after-bmc-update.sh;hba_fw,./hba_fw.sh;X,sleep 5;DB,2;X,reboot -f"
有没有办法让它看起来像这样的输出?
./socflash_x64 if=B600G3_BMC_V0207.ima;sleep 120;./run-after-bmc-update.sh;./hba_fw.sh;sleep 5;reboot -f
除了 bash 之外还有其他方法可以实现这一点,我对任何类型的语言都很好。
【问题讨论】:
-
问题是 sed 使用贪婪搜索,你需要像 perl 这样具有非贪婪正则表达式匹配的东西。