使用&#se;"更改一行用于Java / Android的命令

时间:2015-05-28 12:33:43

标签: java android sed

我正在尝试使用' sed"更改一行。 Android的命令。我使用了以下命令,但它无法正常工作。注意到这里,我的文件位置在" root" Android设备上的文件夹。我还想将值从20更改为10.

String[] cmd = { "su", "#!/bin/bash\n", 
       "sed -i 's/p2p_oper_channel/replacing_text/g' data/misc/wifi/p2p_supplicant.conf" };

Process p = Runtime.getRuntime().exec(cmd); 

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

使用sed这样的命令只会执行替换,但会输出到stdout。您可能希望将替换应用于原始文件。为此,您需要为sed提供一个选项,内联更改的-i选项

你的命令应该是这样的:

sed -i 's/pattern_text=20/text_to_replace=10/g' /data/location/to/file.txt

修改

如果你最近的细节,这是一个应该工作的命令:

sed -i 's/\(p2p_oper_channel=\)[0-9]\+/\1x/' /data/misc/wifi/p2p_supplicant.conf

请注意,部分\1表示在\(\)之间插入部分,即字符串p2p_oper_channelx将插入{{ 1}}。将x更改为您要插入的数字而不是当前数字。

这是最灵活的方式,现在让我们采用最多的静态

x

再次将sed -i 's/p2p_oper_channel=[0-9]\+/p2p_oper_channel=x/' /data/misc/wifi/p2p_supplicant.conf 替换为所需的值。

<强> EDIT2

感谢 Wintermute 的输入,我们发现转义符号需要在Java中进行转义。重新使用新的x函数:

sed