关于正则表达式与上面一行匹配的问题?

关于正则表达式与上面一行匹配的问题?

if(a)
echo "abc";
if(b)
echo "abc";


比如这个文件有这些内容,我现在想把第二行的abc替换成cba,前提是文件里内容和位置不可变动,请高手指教.
这个实现起来方法很多,下面提供一种思路,就是利用sed,这也是sed的基本用法:
[code:1]zhyfly@zhyfly:~/bash$ cat re
if(a)
echo "abc";
if(b)
echo "abc";
zhyfly@zhyfly:~/bash$ sed -e '2s/abc/cba/g' re
if(a)
echo "cba";
if(b)
echo "abc";
zhyfly@zhyfly:~/bash$
[/code:1]
想多了解关于sed,就看看:
http://www.linuxfans.org/nuke/mo ... wtopic&t=112296
这个办法是不错,谢了,但是我现在有这个问题,如果我想替换第二行的abc为bca,但我们都不知道这个abc所在的行只知道他上面一行的内容,那又该怎么做那?
暂时想了个笨方法,先看看:
[code:1]zhyfly@zhyfly:~/bash$ cat re
if(a)
echo "abc";
if(b)
echo "abc";
zhyfly@zhyfly:~/bash$ a=$((`sed -n '/if(a)/=' re`+1))|sed -e "$a"s/abc/bca/g re
if(a)
echo "bca";
if(b)
echo "abc";
zhyfly@zhyfly:~/bash$
[/code:1]
a=$((`sed -n '/if(a)/=' re`+1))|sed -e "$a"s/abc/bca/g re
这条命令我怎么不行啊,一打这条命令就跳到下一行,出现>
>是SP2(第二提示符)
这证明你的输入没有结束(看看漏掉什么了)
sed的参数N、P这些可以实现你的要求,不过就是麻烦了点。