除了试图解决这个问题的几个小时之外,我从未使用sed
。我有一个配置文件,其参数如下:
test.us.param=value
test.eu.param=value
prod.us.param=value
prod.eu.param=value
如果REGIONID
是US:
test.param=value
prod.param=value
有关如何执行此操作的任何帮助(使用sed
或其他方式)都会很棒。
答案 0 :(得分:3)
这对我有用:
sed -n 's/\.us\././p'
即。如果" .us。"可以用点代替,打印结果。
答案 1 :(得分:0)
如果有数百和数百行,首先搜索包含.us的行可能更有效。然后进行字符串替换... AWK是另一个不错的选择或管道grep到sed
cat INPUT_FILE | grep "\.us\." | sed 's/\.us\./\./g'
当然如果'.us。'可以是不足
的值。您也可以使用地址语法(从技术上讲,您可以将第二个sed嵌入到第一个语句中,以及只是不记得语法)
sed -n '/\(prod\|test\).us.[^=]*=/p' FILE | sed 's/\.us\./\./g'
我们应该做一些更清洁的事情。如果格式总是在environment.region.param中,我们可以看一下强制这只发生在等号上的文本上。
sed -n 's/^\([^,]*\)\.us\.\([^=]\)=/\1.\2=/g'
这仅适用于以任意数量的字符开头的行,后跟'。'那么'我们',然后'。'然后在'='符号之前的任何数字。这样我们就不会修改'.us'。如果在“价值”中找到