"output.txt" 变量 4: 要替换的占位符 替换.txt 包含可变数据 输入.txt: 输入-6ren">
gpt4 book ai didi

file - SED 用文件中的可变行替换每个占位符

转载 作者:行者123 更新时间:2023-12-04 21:49:58 28 4
gpt4 key购买 nike

sed -e "s/Var4/r {replace.txt} /g" "input.txt" > "output.txt"

变量 4:
要替换的占位符

替换.txt
包含可变数据

输入.txt:
输入文件

输出.txt
输出文件

“input.txt”中每次出现的“Var4”都应替换为“replace.txt”中的变量行,但 sed 将“replace.txt”读取为普通文本而不是文件名:

不正确:
TextBox1.Value = "r 替换.txt"

正确的:
TextBox1.Value = "0000AAAA"

我厌倦了在所有类似的帖子中搜索正确的语法但没有用!

谢谢你

输入.txt
TextBox1.Value = "Var4"
Else
TextBox1.Value = "- - - - - - -"
End If

TextBox1.Value = "Var4"
Else
TextBox1.Value = "- - - - - - -"
End If

Output.txt 应如下所示:
TextBox1.Value = "0000AAAA"
Else
TextBox1.Value = "- - - - - - -"
End If

TextBox1.Value = "0000BBBB"
Else
TextBox1.Value = "- - - - - - -"
End If

替换.txt
0000AAAA
0000BBBB
0000CCCC

我也试过
sed -e "s/Var4/$(<replace.txt sed -e 's/[\&/]/\\&/g' -e 's/$/\\n/' | tr -d '\n')/g" "input.txt" > "output.txt"

但输出仍然不正确:
TextBox1.Value = "0000AAAA
0000BBBB
0000CCCC
"
Else
TextBox1.Value = "- - - - - - -"
End If

TextBox1.Value = "0000AAAA
0000BBBB
0000CCCC
"
Else
TextBox1.Value = "- - - - - - -"
End If

更新1:
sed '/Var4/R replace.txt' input.txt | sed '/Var4/{N;s/"Var4"\n\(.*\)/"\1"/}' > "output.txt"

如果“Var4”位于行尾,则可以完美运行,但是如果在其后存在任何文本,则输出不正确?

输入.txt
TextBox1.Value = "Var4"  Then
Else
TextBox1.Value = "- - - - - - -"
End If

TextBox1.Value = "Var4" Then
Else
TextBox1.Value = "- - - - - - -"
End If

Output.txt 应如下所示:
TextBox1.Value = "0000AAAA"  Then
Else
TextBox1.Value = "- - - - - - -"
End If

TextBox1.Value = "0000BBBB" Then
Else
TextBox1.Value = "- - - - - - -"
End If

替换.txt
0000AAAA
0000BBBB
0000CCCC

使用后的Output.txt:
sed '/Var4/R replace.txt' input.txt | sed '/Var4/{N;s/"Var4"\n\(.*\)/"\1"/}' > "output.txt"

TextBox1.Value = "Var4" Then
0000AAAA
Else
TextBox1.Value = "- - - - - - -"
End If

TextBox1.Value = "Var4" Then
0000BBBB
Else
TextBox1.Value = "- - - - - - -"
End If

有什么建议吗?

最佳答案

这可能对您有用(GNU sed):

sed '/Var4/R replaceFile' file | sed '/Var4/{N;s/"Var4"\(.*\)\n\(.*\)/"\2"\1/}'

在占位符之后附加替换行,然后在单独的 sed 调用中,在占位符之后附加行并使用替换命令来实现所需的结果。

注: R命令一次只读取以下文件一行,与 r 不同。每次调用时读取整个文件的命令。

关于file - SED 用文件中的可变行替换每个占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51227789/

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