sed命令不更新文本文件

时间:2015-02-16 09:59:19

标签: regex shell unix sed hp-ux

想问一下,因为我在unix脚本中遇到了sed命令的问题。

#!/bin/sh
cnt=2
sed '1 c\
$cnt' test.txt

我想将第一行文本文件test.txt替换为变量cnt的值,即2.如何在上面的sed命令中传递变量? sed命令将$ cnt视为字符串。

2 个答案:

答案 0 :(得分:2)

变量不会用单引号扩展。不过,它们是用双引号扩展的。

sed "1 c\\
$cnt" test.txt

请注意,sed默认情况下不会更新输入文件,而是输出更改后的版本。如果您的sed实现支持它,请使用-i开关修改输入文件。否则,您必须将输出重定向到新文件并将其重命名为原始名称:

sed "..." text.txt > text.new
mv text.new text.txt

答案 1 :(得分:1)

更改为:

#!/bin/sh
cnt=2
sed "1 c\
$cnt" test.txt

要进行变量插值,你需要将它放在双引号而不是单引号中。