如何使用一条sed语句修改2个变量??

如何使用一条sed语句修改2个变量??

如题,本人想做一个shell程序,功能是批量转换很多程序中的return=0变为return=1的同时将其余的return=1变为return=0,目的实现这2个返回值的颠倒,各位有什么办法吗?在此请教大家了      
好像很难。。。
如何区分return=0是不是被替换了的呢
sed好像没有这类判断      
FYI:
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=4259 $?=0] ; cat file
return=0
return=1
return=1
return=0
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=4259 $?=0] ; sed -e '/return=[01]$/y/01/10/' file
return=1
return=0
return=0
return=1
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=4259 $?=0] ; sed -e '/return=[01]$/ { s/0/1/; t; s/1/0/; }' file
return=1
return=0
return=0
return=1
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=4259 $?=0] ; bye
      
非常感谢您的回答       
dearvoid第二种方法有点问题
复制内容到剪贴板
代码:
$ cat file
return=0    return=1
return=1    return=0
return=1    return=0
return=0    return=1

$  sed -e '/return=[01]/ { s/0/1/; t; s/1/0/; }' file
return=1    return=1
return=1    return=1
return=1    return=1
return=1    return=1
      
仅作示例, 视文件的具体格式而定

      
在此回一下楼主的pm
刚开始时, 没有想到sed的y命令, 总想着要判断一下0,1
看完dearvoid的回帖后, 惊叹, 原来是这么简单

不过再仔细考虑了一下
如果行中还更多的数字, 那替换后估计是不是我们想要的结果
因为好像没法只替换在return=后的单个数字
(对sed没有那么熟悉, 所以用不肯定的说法, 而且dearvoid也只是简单示例了,并没说做不到

附上比较土的Perl解法(很土地判断了0和1)
复制内容到剪贴板
代码:
$ cat foo
return=0    return=1
return=1    return=0
return=1    return=0
return=0    return=1

$ perl -lpe ' s/(return=)([0|1])\b/$1 . ($2 ? 0 : 1)/ge' foo
return=1    return=0
return=0    return=1
return=0    return=1
return=1    return=0
      
运用最平凡的交换两个变量值的方法:
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=29038 $?=0] ; cat file
return=0 return=1
return=1 return=0
return=1 return=0
return=0 return=1
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=29038 $?=0] ; cat file.sed
s/return=0\>/return=__0__/g
s/return=1\>/return=0/g
s/return=__0__\>/return=1/g
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=29038 $?=0] ; sed -f file.sed file
return=1 return=0
return=0 return=1
return=0 return=1
return=1 return=0
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=29038 $?=0] ; bye
      
如果有人反驳说这不是一条 sed 语句的话, 我可以改写成一条, 不过比较长了点儿       
good
学习了:)