如何使用sed解析配置文件

时间:2013-04-29 14:39:08

标签: bash sed

除了试图解决这个问题的几个小时之外,我从未使用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或其他方式)都会很棒。

2 个答案:

答案 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'。如果在“价值”中找到