我试图在文件中找到一行,并用特定值替换下一行.我try 了sed,但它似乎不喜欢.否则怎么做?

文件如下所示:

<key>ConnectionString</key>
<string>anything_could_be_here</string>

我想换成这个

<key>ConnectionString</key>
<string>changed_value</string>

以下是我try 过的:

sed -i '' "s/<key>ConnectionString<\/key>\n<string><\/string>/<key>ConnectionString<\/key>\n<string>replaced_text<\/string>/g" /path/to/file

推荐答案

这可能适用于您(GNU-sed):

sed '/<key>ConnectionString<\/key>/!b;n;c<string>changed_value</string>' file

!b否定上一个地址(regexp)并中断任何处理,结束sed命令,n打印当前行,然后将下一行读入模式空间,c将当前行更改为命令后面的字符串.

Linux相关问答推荐

获取Perl文件::Tail开始在最后流传输文件

是否有例外情况需要在.gitconfig中使用?

为什么我们不能使用${$#}来获取传递给shell 脚本的最后一个参数?

IntelliJ(PyCharm)不再识别Linux中的AltGr快捷键

如何知道进程组中的所有进程是否都已收集?

使用awk命令将以:分隔的两个文件合并的方法

线程创建会在 Linux 中触发页面错误吗?它与软脏 PTE 有什么关系?

如何在 Linux 上打印带有屏蔽值的环境名称?

如何验证所有 csv 文件是否具有相同的第一行?

输出特定字符的所有列号

Ubuntu 20 不支持 MAP_FIXED_NOREPLACE

我有 ext2 格式的文件系统图像.我喜欢在终端中读取 Linux 特别是 Ubuntu 中的所有文件系统 struct 数据.有没有工具>

当接收端未从套接字读取时,通过 Unix 套接字发送的消息会发生什么情况?

对一行的最后一个字段进行排序

使用 cmake 构建错误:找不到 -lpthreads

如何知道是否有足够的内存可以在 Linux 机器上部署新应用程序?

在 Ubuntu 中学习 OpenGL

仅当文件存在于 shell 脚本中时才移动

Linux:删除多个文件的文件扩展名

Linux cmd 在 jar 中搜索类文件,而不考虑 jar 路径