gpt4 book ai didi

regex - Sed:如何替换在文件中找到特定模式后找到的字符串

转载 作者:IT王子 更新时间:2023-10-29 01:04:09 25 4
gpt4 key购买 nike

如果我在文件中有以下列表:

integer, parameter :: ni = 1024
integer, parameter :: nj = 256
integer, parameter :: nk = 16

并希望根据字符串 'ni =' 进行搜索,然后将后面的字符串(在本例中为 '1024')替换为新字符串,例如 '512'(我想保留空格) .我该如何使用 sed 呢?请注意,我只想删除等号后面的任何内容,这是因为有时字符串不是简单的整数,它可能类似于“1.D0”。在某些情况下,前面可能会有评论。所以我只想删除等号前面的任何内容并替换为新值。

结果是:

integer, parameter :: ni = 512
integer, parameter :: nj = 256
integer, parameter :: nk = 16

最佳答案

如果你给它 -r 标志,GNU sed 支持扩展的正则表达式。

sed -re 's/(:: ni =)[^=]*$/\1 512/' file

更好的是,匹配多个空格。

sed -re 's/(::\s+ni\s+=)[^=]*$/\1 512/' file

\1 是对括号 ( ) 中匹配内容的引用,因此我们用 \1 和一个新值替换。

关于regex - Sed:如何替换在文件中找到特定模式后找到的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19737398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com