替换特定模式之后紧邻的下一个字符串/单词

替换特定模式之后紧邻的下一个字符串/单词

file.py ARG我的文件中有这样的模式

我想搜索模式并用新值file.py替换(ARG没有"在所有匹配中删除末尾的双引号)。

输入文件如下所示:

"SEC":"NEW"
"CMD":"/usr/local/file.py ARG"

我想使用命令行替换ARG(这里不是常数,它可以是任何文本)。ARG所以我正在寻找模式来搜索file.py和替换文本而不删除双引号。

答案1

根据您在问题中提供的输入:

sed 's/\(file.py\) \+.\+"$/\1 NEW_VALUE"/'

sed- 流编辑器
s- 命令替换
/\(file.py\) \+.\+"$/- 查找末尾有 ' 的所有行文件.py','一个或多个空格','一个或多个字符串', 和 '"'(双引号)。-
\1这替换第一个(在本例中也是唯一一个)子表达式(file.py)

答案2

让我们sed为初学者做一下:

您可能知道substitude 命令来替换s/old/new/.现在你的字符串 ARG 是未知的,所以需要找到一些特征。例如,它位于行尾,仅后跟双引号并且仅包含字母数字字符?伟大的!使用[:alnum:]字符类和“$”锚点来结束行:

sed 's/[[:alnum:]]*"$/new"/'

但这应该只适用于线上file.pysed为此使用地址,可以是行号或/patterns/命令前面:

sed '/file.py/s/[[:alnum:]]*"$/new"/'

相关内容