我是 Linux 的新手并且有一项具有挑战性的任务。
我有 3 个数据文件,需要执行以下操作:
- 转到文件 1 的第 31 行,将其删除
- 从文件 2 中读取 1 行并添加到已删除行的位置
- 转到文件 1 的第 97 行,将其删除,然后从文件 2 中读取第 1 行,并添加到文件 1 中删除的行的位置。
保持相同的文件也很重要,即 file ,不能更改。
我尝试了不同版本的 sed
和 perl
,使用缓冲区复制技巧但没有成功。
我愿意接受所有建议,并请求专家给我建议。
最佳答案
我在你的问题中找不到对第 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/