【发布时间】:2016-09-10 03:51:14
【问题描述】:
我有一个包含以下文本的文件 (file1)-
1SER CA 1 1.401 0.040 0.887
2GLN CA 2 1.708 -0.155 1.002
3ALA CA 3 1.870 -0.103 0.662
4GLU CA 4 1.829 0.274 0.695
我有一个包含类似文本的单独文件 (file2)-
1MET CA 1 17.704 15.987 17.370
2ARG CA 2 17.811 16.145 17.712
3ARG CA 3 17.634 16.267 18.034
4TYR CA 4 17.465 16.615 18.002
我的目标是将file1中2-4范围内的字符替换为file2的2-4中的数据。
期望的输出-
1MET CA 1 1.401 0.040 0.887
2ARG CA 2 1.708 -0.155 1.002
3ARG CA 3 1.870 -0.103 0.662
4TYR CA 4 1.829 0.274 0.695
即file2 的 2-4 中的字符放在 file1 的 2-4 字节中。
我知道我可以使用cut -c 2-4 | sed ... 缩小所需区域的范围
但我无法从单独的文件中“读取”数据并替换到位。
我觉得在 awk 中可能会更容易,但请不要基于列的答案。需要根据文件中的字符范围(本例为2-4)来解决。
添加示例
解决方案也应该能够做到这一点- 文件1-
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
文件2-
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
输出-
ABBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ABBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ABBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
【问题讨论】:
-
你能烘焙一个不应该被替换的行或列的例子吗?我无法通过范围获得您所指的内容(哪个值应该在范围内?)
-
重要的是edit 反映您对 file1 中的范围 2-4 的意思
-
@VarunM 您的第一个示例在某处为假(结果与第 2 到第 5 列的 f2 具有相同的输出)。现在更不清楚您要实现的目标......
-
我们在这里 :) 尝试使这两个文件足够不同以避免下次出现歧义(即:CA 一个数字列在两个文件中都相同,因此更难猜测):)
-
当你说列时,大多数人会认为你的意思是字段,但是你谈论的字节让我认为你的意思是字符(并且你展示了一个似乎使用字符的例子)但是如果你的意思是characters 为什么你会说“bytes”而不是“characters”?请清理您的问题以选择 1 个术语(列、字节、字段或字符),如果是“字节”,请解释为什么“字符”不起作用。