gpt4 book ai didi

java - 对于 Java/Android 使用 'sed"命令更改一行

转载 作者:行者123 更新时间:2023-12-01 11:29:52 26 4
gpt4 key购买 nike

我正在尝试使用 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_channelx 将插入一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com