下面的代码行将两个不同的固定字符串添加到行的开头和结尾。
sed -i 's/.*/somefixedtext,&,someotherfixedtext/' ${f}
somefixedtext,20,30,10,50,someotherfixedtext
我想通过使用变量来增强输出,给我下面,而不是上面的内容;
HELLO,somefixedtext,20,30,10,50,someotherfixedtext
尝试了一些变化,但都失败了;
VARIABLE="HELLO"
sed -i 's/.*/"$VARIABLE,somefixedtext,&,someotherfixedtext/' ${f}
如何在Sed中将字符串变量合并到行的开头并与fixedstring结合?
答案 0 :(得分:2)
如果替换字符串来自变量,则Sed是一个糟糕的选择,因为它将变量视为sed命令而不是文字字符串,因此如果变量包含/
或{等特殊字符,它将会中断{1}}或类似的。
Awk更适合这项任务,例如:
&
对于inplace修改,您需要最新版本的GNU awk和$ cat file
20,30,10,50
$ var=hello
$ awk -F, -v prefix="$var" -v OFS=, '{print prefix, "sometext", $0, "somethingelse"}' file
hello,sometext,20,30,10,50,somethingelse
参数。
对于它的价值,如果你在单引号之外引用变量,那么该命令似乎会起作用,但它会有点错误:
-i inplace