echo "AXIS2C_HOME=/usr/local/Axis2C" | sed 's/\(^AXIS2C_HOME=\) \(.*\)/ \2 \1/'我期望的输出是/usr/local/Axis2C AXIS2C_HOME=。
我不知道我做错了什么。:(
发布于 2011-02-07 17:52:02
简单的答案是“反斜杠越多,空格越少”:
echo "AXIS2C_HOME=/usr/local/Axis2C" | sed 's/\(^AXIS2C_HOME=\)\(.*\)/\2 \1/'但更广泛的答案是,“等等,你想做什么?”您希望将键值对拆分为有用的变量,还是真的只是尝试将输入扩展到相反的语法中,以便将其提供给其他方面呢?
发布于 2011-02-07 17:38:13
在=之后有一个错误的空格。尝试:
sed 's/\(^AXIS2C_HOME=\)\(.*\)/\2 \1/'下面的内容也是有效的,并且稍微短了一点。\1将是第一个/之前的任何东西
sed 's|^\([^/]*\)\(/.*\)|\2 \1|'发布于 2011-02-07 18:20:52
Sed很好,但是Perl也可以这样做,它不需要反斜杠林子:
% echo "AXIS2C_HOME=/usr/local/Axis2C" | perl -pe 's/(^AXIS2C_HOME=)(.*)/\2 \1/'
/usr/local/Axis2C AXIS2C_HOME=另外,您拥有正则表达式引擎的全部功能,因此您可以完成更复杂的模式。
https://unix.stackexchange.com/questions/7041
复制相似问题