我正在尝试使用' 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);
有人可以帮我解决这个问题吗?
答案 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_channel
,x
将插入{{ 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