0

我想用 sed 替换一行,但得到了两条相同的行:

$ sed '50s/false/true/p' ./src/com/android/quicksearchbox/SearchableSource.java >SearchableSource.java.1



$ diff SearchableSource.java.1 ./src/com/android/quicksearchbox/SearchableSource.java
50,51c50
<     private static final boolean DBG = true;
<     private static final boolean DBG = true;
---
>     private static final boolean DBG = false;

为什么?怎么做才能得到我想要的?

4

3 回答 3

1

p末尾的意思是“打印” 。您告诉 sed 在成功替换后打印该行。-n无论如何,Sed 都会打印每一行(如果没有被告知不要这样做)。你还没有告诉我们你想要什么,所以要么删除final,p要么指定-n选项。

于 2013-05-14T08:47:03.587 回答
0

在最后一个 / ... 之后删除 p 您正在执行搜索和替换,然后打印结果。

于 2013-05-14T08:46:55.357 回答
0

p因为命令末尾的修饰符表示“打印”。的默认行为sed是打印,所以你得到了两者。如果sed -n您想默认不打印或删除p.

于 2013-05-14T08:47:17.130 回答