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
为初学者做一下:
您可能知道s
ubstitude 命令来替换s/old/new/
.现在你的字符串 ARG 是未知的,所以需要找到一些特征。例如,它位于行尾,仅后跟双引号并且仅包含字母数字字符?伟大的!使用[:alnum:]
字符类和“$”锚点来结束行:
sed 's/[[:alnum:]]*"$/new"/'
但这应该只适用于线上file.py
。sed
为此使用地址,可以是行号或/patterns/
命令前面:
sed '/file.py/s/[[:alnum:]]*"$/new"/'