我正在尝试在文件中查找一行并将下一行替换为特定值。我试过sed,但它似乎不喜欢\n。这还能怎么做?
文件如下所示:
<key>ConnectionString</key>
<string>anything_could_be_here</string>
我想改成这个
<key>ConnectionString</key>
<string>changed_value</string>
这是我尝试过的:
sed -i '' "s/<key>ConnectionString<\/key>\n<string><\/string>/<key>ConnectionString<\/key>\n<string>replaced_text<\/string>/g" /path/to/file
最佳答案
一种方式: 示例文件
$ cat file
Cygwin
Unix
Linux
Solaris
AIX
使用 sed,将模式 'Unix' 之后的下一行替换为 'hi':
$ sed '/Unix/{n;s/.*/hi/}' file
Cygwin
Unix
hi
Solaris
AIX
针对您的具体问题:
$ sed '/<key>ConnectionString<\/key>/{n;s/<string>.*<\/string>/<string>NEW STRING<\/string>/}' your_file
<key>ConnectionString</key>
<string>NEW STRING</string>
https://stackoverflow.com/questions/18620153/
相关文章:
linux - 如何让 GNU screen 读取 .bash_profile/.bash_rc 更
linux - 如果关键字触发然后执行命令,Shell 脚本来监视日志文件?
python - 如何在 Python 中监听 Linux 中的 'usb device inser
windows - Node.js 开发,windows 还是 linux?
linux - 如何在非阻塞套接字上处理 OpenSSL SSL_ERROR_WANT_READ/W
linux - 是否有一个 linux 命令来确定与给定进程 ID 关联的窗口 ID?
php - 根据外部请求在 Netbeans 中启动 XDebug