【问题标题】:regx to replace to build versions in file正则表达式替换以构建文件中的版本
【发布时间】:2019-02-20 01:26:57
【问题描述】:

需要正则表达式将属性文件中的构建版本1.0.0替换为1.0.2,文件内容类似于下面提到的内容;

Eagle-1.0.0
Chick-1.0.0
Bingo-1.0.0

我尝试了以下方法,但它不起作用

sed -i "s/1\.0\.O\.[0-9.]*/1.0.0./g" file.txt

【问题讨论】:

  • 第二个0 看起来很像O...
  • 两个问题:1) 您是否注意到有一个“O”(大写哦,与“零”?2)1.0.2 中的“2”来自哪里?建议:sed -i "s/1.0.0/1.0.2./g" file.txt > newfile.txt
  • @paulsm4: . 需要转义,否则它们将被sed 正则表达式引擎解释为元字符。
  • @Allan - 你是对的,当然。叹息……谢谢。我最初的问题和建议仍然存在。通过此更正:sed -i "s/1\.0\.0/1\.0\.2/g" file.txt > newfile.txt
  • 叹息……再次。我不断提醒自己,我永远不应该在没有亲自尝试的情况下回答问题。到那时,其他 40 人击败了我 :( 无论如何 - 谢谢你,+1 的回应:)

标签: regex linux unix jenkins sed


【解决方案1】:

您只需运行以下sed 命令:

XXX@XXX:~/Downloads/fun_play/archive/filestosearch$ cat version 
Eagle-1.0.0 Chick-1.0.0 Bingo-1.0.0
XXX@XXX:~/Downloads/fun_play/archive/filestosearch$ sed -i".bak" 's/1\.0\.0/1.0.2/g' version
XXX@XXX:~/Downloads/fun_play/archive/filestosearch$ cat version
Eagle-1.0.2 Chick-1.0.2 Bingo-1.0.2
XXX@XXX:~/Downloads/fun_play/archive/filestosearch$ cat version.bak 
Eagle-1.0.0 Chick-1.0.0 Bingo-1.0.0

注意事项:

  • -i".bak"允许您修改文件并备份文件以防万一,相同的文件名和后缀.bak
  • 您需要转义 . 否则它们将被 sed 正则表达式引擎解释为元字符。

【讨论】:

    猜你喜欢
    • 2014-03-11
    • 2013-01-12
    • 2017-10-18
    • 2017-01-21
    • 2019-11-29
    • 2018-12-19
    • 1970-01-01
    相关资源
    最近更新 更多