1

在以下 shell 脚本中,如何${today}在第 4 行插入单独的现有文件 index.html?(index.html 中的第 1-3 行已经有一些代码。第 4 行是空的。第 5-EOL 行有一些 html 代码。)

#!/bin/sh
Today=$(date "+%Y.%m.%d-%H.%M.%S")

#insert ${today} into a separate existing file (index.html) in line 4
#<to-do>
4

2 回答 2

2

sed实用程序可以在特定行插入文本。这可能不是最好的表达方式;它会覆盖它在第 4 行找到的任何内容。

Today=$(date "+%Y.%m.%d-%H.%M.%S")
sed -i -e "4s/^.*$/$Today/" index.html

-i参数告诉 sed 就地编辑——它有效地覆盖了输入文件。我认为这个选项使 sed 成为比 awk 更好的选择来解决您的问题。对于测试,删除-i参数,它将改为写入标准输出。

如果您希望它在第 4 行是空行(没有空格,没有字符)时才起作用,请改用它。

Today=$(date "+%Y.%m.%d-%H.%M.%S")
sed -i -e "4s/^$/$Today/" index.html
于 2013-07-20T15:40:10.653 回答
2

我会用awk这个:

awk 'NR==4 {print strftime("%Y.%m.%d-%H.%M.%S", systime())} 1' file

如果您不想在内部生成日期字符串,也可以传入一个变量awk

Today=$(date "+%Y.%m.%d-%H.%M.%S")
awk -vtoday=$Today 'NR==4 {print today} 1' file
于 2013-07-20T16:27:54.060 回答