将filename文本里的a改为b,b改为c(前提:一行中有a无b,有b无a)

sed -n '/[ab]/!p;h;s/a/b/p;g;s/b/c/p;' filename

或者

sed -nr '/a|b/!p;h;s/a/b/p;g;s/b/c/p;' filename

若filename的内容cat -A出来结果为:

1$
a$
2$
 b$
3$
^Ia$
4$
^Ib$

执行命令后 filename | cat -A 后,结果为

1$
b$
2$
 c$
3$
^Ib$
4$
^Ic$