【发布时间】:2014-12-03 00:49:52
【问题描述】:
我有两个文件(A.txt 和 B.txt):
A.txt:
many lines of text
marker
A1 A2 A3
A4 A5 A6
...
... AN
many line of text
B.txt:
some text
B1 B2 B3
B4 B5 B6
...
... BN
我想将 A.txt 中的 A1 - AN 块替换为 B.txt 中的 B1 - BN。
请求的结果是:
many lines of text
marker
B1 B2 B3
B4 B5 B6
...
... BN
many line of text
我知道如何找到 A 块:
grep -n "marker" A.txt |cut -f1 -d:
我知道如何获得B块:
sed -n '2,+6p' B.txt
我什至可以编写一个类似以下内容的脚本:
for ...
var=$(sed -n '2p' B.txt)
sed -i "34s/.*/$var/" A.txt
但我正在寻找简单而优雅的东西
【问题讨论】:
-
你能确定需要被替换的行(在
A.txt中)还是只需要计算它们?B.txt的那几行呢? -
无法通过内容来判断,只能从内容开始定位,然后计数。
-
是 AN/BN 始终是一行的最后一个字段,A1 和 B1 始终是第一个吗?
-
A1 ... AN, B1...BN 代表双精度值