【发布时间】:2012-11-06 10:44:52
【问题描述】:
我是 shell 脚本的新手,对如何使用 sed 或任何其他工具将我的文本文件中的第一行替换为字符串感到困惑。以下是文本文件内容:
我想用movie.MOV(可能是shell脚本中的变量)替换第一行(电影文件路径)
请指导我如何做到这一点。我在一些帖子中遇到了sed,我需要在这里使用sed吗?
【问题讨论】:
我是 shell 脚本的新手,对如何使用 sed 或任何其他工具将我的文本文件中的第一行替换为字符串感到困惑。以下是文本文件内容:
我想用movie.MOV(可能是shell脚本中的变量)替换第一行(电影文件路径)
请指导我如何做到这一点。我在一些帖子中遇到了sed,我需要在这里使用sed吗?
【问题讨论】:
sed 是正确的工具,试试看:
var="movie.MOV"
sed -i "1s/.*/$var/" file.txt
解释
1 表示第一行s/// :我们用 $var 变量替换所有内容 (.*)【讨论】:
1s:.*/:: 删除除文件名之外的所有内容,如果这是提问者真正想要的。
sed 使用-i 选项编辑文件,例如sed -i '.bak' "1s/.*/${var}/" file.txt sed 将就地编辑它并创建一个备份文件(.bak)。如果您不需要备份文件,只需为-i 选项提供sed 一个空白参数,如:sed -i '' "1s/.*/${var}/" file.txt
你可以用tail轻松做到这一点:
#I want to replace the first line
cp test.txt test.txt.backup
echo 'mynewfirstline'> test.txt
#add everything from old file starting from second line
cat test.txt.backup |tail -n+2>> test.txt
【讨论】: