首页 > 解决方案 > 更新 txt 文件的特定行

问题描述

使用终端,我有这个输出“Date.IPLOG”如何更新/添加这个输出到另一个 txt 的特定行,只覆盖前一行内容?

输出Date.IPLOG 线5000 = IP changed Date.IPLOG

标签: bashterminalappendline

解决方案


假设您的起始文件是:

$ 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

这个怎么运作

  1. -v new="NewValue"创建一个 awk 变量new

  2. -v line=3创建一个 awk 变量line

  3. 如果当前行号 ,NRline,则将NR==line{$0=new}行 , 的内容更改$0new

  4. 1是 awk 对 print-the-line 的简写。


推荐阅读