我在一个文本文件中有一行内容如下:Variable="路径/到/文件";但我正在做的是使用bash脚本中的while循环将该行替换为不同的"换行符"。
我这样做是通过这个命令
sed-i"5s/.*/"$newline"/"Outputfile.txt
我将Outputfile.txt中的第五行替换为$newline。我试过各种各样的"one_answers"或使用${newline},但我似乎无法使其工作。换行符本身有引号这一事实似乎有问题,因为我需要在新的文本文件中有引号。
这是我存储的新行:
newline='s:Variables="路径/到/80kVp/NAME"${i}"_1">
其中变量i循环通过。
有什么处理这个问题的想法吗?
输出错误:sed:1:";5s/.*/s:Sc/DoseToCompon…":替代命令中的错误标志:"D
这里的问题与引号只有很小的关系——您得到的错误是因为您从$newline得到的替换文本包含/
字符。这将在第一个/
处结束seds
命令,使其将以下字符视为修饰符。由于D
(第一个/
之后的第一个字符(不是有效的修饰符,因此会出现错误。最简单的修复方法是转义替换文本中的/
字符:
newline='s:Variabels = "Path/to/80kVp/NAME'${i}'_1"'
另一种可能性(只适用于sed的某些版本(是使用不同的字符来定义s
命令:
sed -i "5s|.*|$newline|" Outputfile.txt
仅当替换文本不包含|
时才起作用