我想在找到匹配的字符串时替换该行的最后一个字。
输入文件:
"id": 5918915,
"description": "Test Job - NA",
"revision": 5
预期产出:
"id": 5918915,
"description": "Test Job - EU",
"revision": 5
因此,对于匹配description
的行,请将最后一个单词替换为给定的单词。在这种情况下,在第2行中,使用NA",
EU",
我试过
sed -i '/"description"/s/.*/EU",//g' file_name
但它不起作用
答案 0 :(得分:2)
sed -i -r '/^[ \t]*"description":.*/s/^(.* )NA",[\t ]*$/\1EU/' FILE
"id": 5918915,
"description": "Test Job - EU",
"revision": 5"
要进行测试,请删除-i开关。
空格的数量不安静,所以我将[ \t]*
放在行开头和结尾处,以获得随机大小的空白和制表符。
你的命令:
sed -i '/"description"/s/.*/EU",//g' file_name
应该用EU",
替换整行,而不仅仅是最后一个char序列。
-i是GNU-sed的一个选项。检查您的版本并阅读精细手册。如果您的sed缺少支持,则必须将输出重定向到文件sed "COMMANDS" INFILE > TMPFILE; mv TMPFILE INFILE
。注意,sed "COMMANDS" INFILE > INFILE
不起作用,但会立即销毁INFILE;一种流行的,聪明的,但不成功的想法。我也有。 :)
答案 1 :(得分:0)
我得到了工作命令sed -i' /" description" / s / [^] * * $ / EU",/' FILE_NAME