gpt4 book ai didi

bash - sed 用多行变量替换行

转载 作者:行者123 更新时间:2023-11-29 09:31:57 25 4
gpt4 key购买 nike

我正在尝试用存储在变量中的多行字符串替换文件中的单行。

打印到屏幕时我能够得到正确的结果,但如果我想进行就地替换则不行。

文件有以下格式:

*some code*
*some code*
string_to_replace
*some code*

我希望生成的文件是:

*some code*
*some code*
line number 1
line number 2
line number 3
*some code*

我试过的代码是:

new_string="line number 1\nline number 2\nline number 3"

# Correct output on screen
sed -e s/"string_to_replace"/"${new_string}"/g $file

# Single-line output in file: "line number 1line number 2line number 3"
sed -i s/"string_to_replace"/"${new_string}"/g $file

当尝试组合使用 -i-e 选项时,结果与仅使用 -i 时的结果相同。

我在 CentOS 上使用 GNU sed 版本 4.1.5(从 Mac 通过 ssh 连接到它)。

最佳答案

虽然您特别要求使用 sed,但您可以使用 awk 通过使用以下命令将多行变量存储在文件中来完成此操作

awk '/string_to_replace/{system("cat file_with_multiple_lines");next}1' file_to_replace_in > output_file

关于bash - sed 用多行变量替换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26041088/

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