linux - 使用 sed 和 perl 进行文字处理,将行从一个文件复制到另一个文件

标签 linux lines copying

我是 Linux 的新手并且有一项具有挑战性的任务。

我有 3 个数据文件,需要执行以下操作:

  1. 转到文件 1 的第 31 行,将其删除
  2. 从文件 2 中读取 1 行并添加到已删除行的位置
  3. 转到文件 1 的第 97 行,将其删除,然后从文件 2 中读取第 1 行,并添加到文件 1 中删除的行的位置。

保持相同的文件也很重要,即 file ,不能更改。

我尝试了不同版本的 sedperl,使用缓冲区复制技巧但没有成功。

我愿意接受所有建议,并请求专家给我建议。

最佳答案

我在你的问题中找不到对第 3 个文件的引用,但是如果你的意思是将文件 1 的第 31 行替换为文件 2 的第一行,并将文件 1 的第 97 行替换为文件 2 的第二行:

sed -i -e '30R f2
31d;96R f2
97d' f1

f2 之后的新行很重要,因此 sed 知道它是文件名的末尾。

请注意,R 命令是一个 GNU 扩展,它不是标准的。

关于linux - 使用 sed 和 perl 进行文字处理,将行从一个文件复制到另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213305/

相关文章:

java - 如何识别特定的 USB 端口

regex - Pcregrep 包含文件扩展名错误

html/css 简单的两行/两行元素

java-如何计算段落之间的空格并从总行数中减去它们?

c# - 如何将 float 组从 C# 复制到 C dll

java - 在 swing 中添加带有默认组件的新 jpanel

python - 安装 pygame 时出现 easy_install 错误

c - fork 的子进程是否使用相同的信号量?

latex - LaTeX:LSTListing自动识别代码通过

iphone - NSFileManager - 在启动时复制文件