sed将所有零替换为1,将所有1替换为零
请注意:sed将所有零替换为1,将所有1替换为零,sed,Sed,请注意: 0 | 11 | 10 | 01 | 0。| 10 |。 想要这个: 1 | 0 0 | 0 1 | 1 0 | 1.| 0 1 | 我想这会有用的: sed-e's/0/1/g'-e's/1/0/g' 但似乎给了我所有的零让我们玩电脑吧 鉴于此: 0 | 11 | 10 | 01 | 0。| 10 |。 。。。将所有0更改为1。现在你有了这个: 1 | 11 | 11 | 11 | 1.| 11 | 。。。好了,现在你被卡住了。只剩下1秒了,您不知道该换回哪一个 。。。因此,将0改为
0 | 11 | 10 | 01 | 0。| 10 |。
想要这个:
1 | 0 0 | 0 1 | 1 0 | 1.| 0 1 |
我想这会有用的:
sed-e's/0/1/g'-e's/1/0/g'
但似乎给了我所有的零让我们玩电脑吧
鉴于此:
0 | 11 | 10 | 01 | 0。| 10 |。
。。。将所有0更改为1。现在你有了这个:
1 | 11 | 11 | 11 | 1.| 11 |
。。。好了,现在你被卡住了。只剩下1秒了,您不知道该换回哪一个
。。。因此,将0改为2,只需一小会儿:
2 | 11 | 12 | 21 | 2.| 12 |
。。。现在将1改为0
2 | 0 0 | 0 2 | 2 0 | 2.| 1 2 |
。。。然后是2到1
1 | 0 0 | 0 1 | 1 0 | 1.| 1 1 |
现在是大结局:
$ sed -e 's/0/2/g' -e 's/1/0/g' -e 's/2/1/g'
有一个稍微不太为人所知的sed,它在这里派上了用场:
$ sed 'y/01/10/' <<< '0|1 1|1 0|0 1|0 .|1 0|.'
1|0 0|0 1|1 0|1 .|0 1|.
$sed'y/01/10/“请看,它以全零结尾,因为您首先将所有零替换为1(给您一个全1字符串),然后将所有这些零替换为零。一个解决办法是把所有的一换成二,然后把所有的零换成一,然后把所有的二换成零。@KenWhite伟大的思想都是一样的!真有趣,我们都选了2@MikeSlinn:真有趣。:-)你回答得也很好。美好的这个解决方案就是要使用的。这正是问题所要求的,以一种稳健可靠的方式,而不是依赖于一个老套的临时替代。不知道为什么这个答案被否决了——它很好地解释了问题,并提供了一个体面的解决方案。请投赞成票。谢谢@EthanFurman