【问题标题】:Find and replace text in a file between range of lines using sed使用 sed 在文件的行范围之间查找和替换文本
【发布时间】:2016-03-22 08:04:47
【问题描述】:

我有一个大文本文件 (URL.txt),我希望使用单个 sed 命令执行以下操作:

  1. 在第 19 行和第 33 行之间查找文本“google”并将其替换为“facebook”。

  2. 在终端上显示输出而不改变原始文件。

【问题讨论】:

  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地点。
  • 我想公开反对@jww 的评论。这是一个非常有用且有效的问题。

标签: linux bash command-line sed


【解决方案1】:

你可以使用sed地址:

sed '19,33s/google/facebook/g' file

这将在 19 和 33 之间的行上运行替换。

sed命令的格式如下:

[address[,address]]function[arguments]

19,33 是地址,
substitute 是函数
global 是参数

【讨论】:

  • 行号是从 0 开始还是从 1 开始?
  • 它们从1开始,最后一行可以用$解决,自己试试吧:seq 5 | sed '1d;$d'
【解决方案2】:

上面的答案在 Mac OSX 上几乎对我有用。

sed '19,33s/google/facebook/' 文件

不用大括号也能完美工作。

sed '19,$s/google/facebook/' 文件

在文件结束前也有效。

【讨论】:

  • 考虑链接你所指的答案,而不是引用“上述答案”,因为答案可能永远不会在你的头上:)
  • 在linux上使用这个选项也可以,19和33都包含。
猜你喜欢
  • 2012-02-14
  • 2019-07-02
  • 2010-12-20
  • 2019-01-19
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
相关资源
最近更新 更多