我正在尝试使用 Android 的“sed”命令更改行。我已使用以下命令,但它不起作用。请注意,我的文件位置位于 Android 设备的“root”文件夹中。我也想将值从 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);
有人可以帮我解决这个问题吗?
最佳答案
像这样使用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
将插入一个 x
。将 x
更改为您要插入的数字,而不是当前数字。
这是最灵活的方式,现在让我们采用最静态的方式。
sed -i 's/p2p_oper_channel=[0-9]\+/p2p_oper_channel=x/' /data/misc/wifi/p2p_supplicant.conf
再次将 x
替换为所需的值。
编辑2
感谢Wintermute的输入,我们发现Java中需要对转义符号进行转义。重新使用新的 sed
函数:
sed -i 's/p2p_oper_channel=[0-9]\\+/p2p_oper_channel=x/' /data/misc/wifi/p2p_supplicant.conf
关于java - 对于 Java/Android 使用 'sed"命令更改一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30506742/