如何查找单词并仅更改下一行单词

1 grep awk text-processing

文件名staff.txt和示例内容为:

JHON
MANAGER
10000
Run Code Online (Sandbox Code Playgroud)

我想JHON在一个文件中查找,我想用另一个单词/数字更改第二行中的任何内容。

我怎样才能做到这一点?

Jef*_*ler 8

使用 ed,伙计!

ed -s staff.txt <<< $'/JHON/+2s/.*/4242\nw\nq'
Run Code Online (Sandbox Code Playgroud)

这会以脚本模式 ( -s)调用文件的 edstaff.txt并以 ANSI 引用的 here-string 向其发送以下命令:

  • 找到包含的行JHON并在该行之外移动两行 ( +2)
  • 在该行上,搜索并替换所有存在的 ( .*) 为4242
  • w将文件写入磁盘
  • q适合

中间体\n将各种ed命令分开。

或者,您可以使用以下c命令更改行:

ed -s staff.txt <<< $'/JHON/+2c\n4242\n.\nw\nq'
Run Code Online (Sandbox Code Playgroud)

此处,替换文本需要单独(在c命令之后)输入,并以句点 ( \.\n) 结束。


pLu*_*umo 6

随着sed你可以移动到下一行n

sed '/JHON/{n;n;s/.*/42/}'
Run Code Online (Sandbox Code Playgroud)