仅当找到匹配的字符串时,我才想替换该行的最后一个单词。
输入文件 :
"id": 5918915,
"description": "Test Job - NA",
"revision": 5
预期输出:
"id": 5918915,
"description": "Test Job - EU",
"revision": 5
所以,对于线路匹配description
,用给定的单词替换最后一个单词。在这种情况下,在第 2 行中替换最后一个单词NA",
with EU",
I tried
sed -i '/"description"/s/.*/EU",//g' file_name
但它不起作用
sed -i -r '/^[ \t]*"description":.*/s/^(.* )NA",[\t ]*$/\1EU/' FILE
"id": 5918915,
"description": "Test Job - EU",
"revision": 5"
For testing, remove the -i switch.
空白的数量不太清楚,所以我放置了[ \t]*
在行的开头和结尾处随机大小的空白和制表符。
您的命令:
sed -i '/"description"/s/.*/EU",//g' file_name
应将整行替换为EU",
,不仅仅是最后一个字符序列。
-i 是 GNU-sed 的一个选项。检查您的版本并阅读精美的手册。如果您的 sed 缺乏支持,您必须将输出重定向到文件sed "COMMANDS" INFILE > TMPFILE; mv TMPFILE INFILE
。注意sed "COMMANDS" INFILE > INFILE
不会起作用,但会立即销毁INFILE;一个流行的、聪明的但不实用的想法。我也有过。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)