在一行中找到另一个字符串时如何替换字符串?

sat*_*aki 1 linux grep sed text-processing

当在 unix 文件的一行中找到字符串 'ny' 时,我想用另一个字符串 'ab' 替换字符串 'xy'。

示例文本:

If we have xy today we can go to ny.
If we have xy tomorrow we can go to ny tomorrow.
If we have mn now we can go to ny now.
Run Code Online (Sandbox Code Playgroud)

输出文本应如下所示:-

If we have ab today we can go to ny.
If we have ab tomorrow we can go to ny tomorrow.
If we have mn now we can go to ny now.
Run Code Online (Sandbox Code Playgroud)

jim*_*mij 5

sed 可能是最简单的方法:

sed '/ny/s/xy/ab/g' file
Run Code Online (Sandbox Code Playgroud)

它包含两个子命令:/ny/搜索模式,并进行s/xy/ab/g实际替换。请注意,它将替换所有出现的xy; 如果您只想替换每行中的第一个,只需删除 final g

  • 严格地说,`/ny/` 不是一个命令,而是后面的 `s` 命令的地址(这也可能是行号或两个正则表达式或数字之间的行范围)。 (2认同)