bash - 更新 txt 文件的特定行
问题描述
使用终端,我有这个输出“Date.IPLOG”如何更新/添加这个输出到另一个 txt 的特定行,只覆盖前一行内容?
输出Date.IPLOG
线5000 = IP changed Date.IPLOG
解决方案
假设您的起始文件是:
$ cat file
1
2
3
4
5
并假设您要将第 3 行更改为NewValue
. 在这种情况下,运行:
$ awk -v new="NewValue" -v line=3 'NR==line{$0=new} 1' file
1
2
NewValue
4
5
这将新版本显示到标准输出。要更改file
,请运行:
awk -v new="NewValue" -v line=3 'NR==line{$0=new} 1' file >tmp && mv tmp file
或者,如果您有gawk
(GNU awk),我们可以将上述简化为:
awk -i inplace -v new="NewValue" -v line=3 'NR==line{$0=new} 1' file
这个怎么运作
-v new="NewValue"
创建一个 awk 变量new
。-v line=3
创建一个 awk 变量line
。如果当前行号 ,
NR
是line
,则将NR==line{$0=new}
行 , 的内容更改$0
为new
。1
是 awk 对 print-the-line 的简写。
推荐阅读
- node.js - Req.params 显示数据,但 req.params.variable_name 显示未定义
- javascript - 在基于 TypeScript 的 Vue 中将 vuex 状态和突变绑定到复选框组件属性
- docker - 在服务器上运行竹容器时卷数据未填充
- cassandra - 如何在 Windows 10 上安装 cassandra?
- spring - 在春季从过滤器中禁用jsession id
- c - 如何避免 xc8 编译器中的警告 1352?
- css - 如何在 Spree Commerce 中为自定义页面呈现新布局
- python - 如何在 PyMuPDF 中获取文本的背景颜色
- sql-server - SSMS 导出为 CSV 或复制粘贴中断注释列
- python - 如何将类指针发送到python函数?