sed
除了试图解决这个问题的几个小时之外,我从来没有使用过。我有一个配置文件,其参数如下:
test.us.param=value
test.eu.param=value
prod.us.param=value
prod.eu.param=value
REGIONID
如果是美国,我需要解析这些并输出:
test.param=value
prod.param=value
关于如何做到这一点的任何帮助(有sed
或没有)都会很棒。
这对我有用:
sed -n 's/\.us\././p'
即如果“.us”。可以用点代替,打印结果。
如果有成百上千的行,首先搜索包含 .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”。如果在“值”中找到