首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shell脚本-如何将数据插入到一个单独的文件中的特定行?

问Shell脚本-如何将数据插入到一个单独的文件中的特定行?
EN

Stack Overflow用户
提问于 2013-07-20 23:19:18
回答 2查看 1.4K关注 0票数 1

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

代码语言:javascript
复制
#!/bin/sh
Today=$(date "+%Y.%m.%d-%H.%M.%S")

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

回答 2

Stack Overflow用户

发布于 2013-07-20 23:40:11

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

代码语言:javascript
复制
Today=$(date "+%Y.%m.%d-%H.%M.%S")
sed -i -e "4s/^.*$/$Today/" index.html

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

如果您希望仅在第4行为空行(无空格,无字符)时才执行此操作,请改用此命令。

代码语言:javascript
复制
Today=$(date "+%Y.%m.%d-%H.%M.%S")
sed -i -e "4s/^$/$Today/" index.html
票数 2
EN

Stack Overflow用户

发布于 2013-07-21 00:27:54

我将使用awk来完成以下操作:

代码语言:javascript
复制
awk 'NR==4 {print strftime("%Y.%m.%d-%H.%M.%S", systime())} 1' file

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

代码语言:javascript
复制
Today=$(date "+%Y.%m.%d-%H.%M.%S")
awk -vtoday=$Today 'NR==4 {print today} 1' file
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17763691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档