替换文件的第一行并添加带有变量的新行

Replace first line of a file and adding a new line with variables

我在一个 HP-UX/ksh UNIX 机器上,我有一些文件,我希望始终将第一行替换为包含变量内容的另一行。这是一个示例文件和变量:

date=04_16_2016

var1=RM1

(其他时候var1会不一样)

file1.text :

file=/home/user1/something_04_09_2016.txt
stuff
stuff
stuff

我想完全替换删除第一行并将其替换为如下伪代码:

file=/home/user1/something_$var1_$date.txt

因此完成后文件将如下所示:

file=/home/user1/something_RM1_04_13_2016.txt
stuff
stuff
stuff

如有任何帮助,我们将不胜感激!

说,你设置了 datevar1,那么你可以

sed "1 s:.*:/home/user1/something_${var1}_${date}.txt}:" file1.txt > file1.mod

sed s 仅应用于第 1 行。

当您的 sed 没有 -i 选项(就地编辑)时,您可以使用 ed。 不要缩进下面的代码,大部分内容都需要在行的开头。

newstring="/home/user1/something_${var1}_$(date +'%d_%m_%Y').txt"
ed -s input << EOF
1c
${newstring}
.
w
q
EOF

另一个sed备选方案

header="some string with $var and $formatted_date"
sed -i -e "1i${header}" -e 1d file