在以下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>
答案 0 :(得分:2)
sed
实用程序可以在特定行插入文本。这可能不是表达它的最佳方式;它会覆盖它在第4行找到的任何东西。
Today=$(date "+%Y.%m.%d-%H.%M.%S")
sed -i -e "4s/^.*$/$Today/" index.html
-i
参数告诉sed进行编辑 - 它有效地覆盖了输入文件。我认为这个选项使得sed比awk更适合您的问题。要进行测试,请删除-i
参数,然后它将写入stdout。
如果你希望这个只用 ,如果第4行是一个空白行(没有空格,没有字符),请改用它。
Today=$(date "+%Y.%m.%d-%H.%M.%S")
sed -i -e "4s/^$/$Today/" index.html
答案 1 :(得分: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