regex - sed 命令不更新文本文件

标签 regex shell unix sed hp-ux

<分区>

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

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

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

最佳答案

变量没有用单引号展开。不过,它们用双引号展开。

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

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

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

关于regex - sed 命令不更新文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28538762/

相关文章:

apache - 在虚拟主机上托管页面时发现 302,Ubuntu

regex - 使用正则表达式从字符串中提取单词

javascript - 正则表达式查找并替换文件 Javascript 中的文件路径

linux - 编写shell脚本时如何使命令并发运行?

unix - Unix SALT 如何帮助保护密码?

python - 输出 stdin 的每第 n 个字节

Python 正则表达式命名组以

Python正则表达式,从字符串中获取名称

shell - 如何通过shell检查vagrant机器是否正在运行

Linux shell 总和列