【发布时间】:2014-02-05 10:06:25
【问题描述】:
我有一个包含 74.000 篇文章的大文件 (6Gb):
<text id="1">
bla bla bla bla.........
</text>
<text id="2">
bla bla bla bla.........
</text>
<text id="3">
bla bla bla bla.........
</text>
<text id="............ and so on untill 74.000
然后我有另一个文件,其标题与每个 id 对应,如下所示:
1 title1
2 title2
3 title3
...
74000 title74000
我必须在第一个文件中为每个 id 设置相应的标题,所以我将第二个文件转换为这个脚本:
sed -i "s/<text id="1">/<text id="1" title="title1">/" file1
sed -i "s/<text id="2">/<text id="2" title="title2">/" file1
sed -i "s/<text id="3">/<text id="3" title="title3">/" file1
...
sed -i "s/<text id="74000">/<text id="74000" title="title74000">/" file1
请注意,我没有将 g 放在 sed 命令的末尾,因为它不是全局搜索,这意味着在第一次匹配时它会更改字符串并进入下一个搜索。该脚本有效,但由于文件很大,每次更改需要 12 分钟,这给了我大约两年的时间来完成所有更改,而我需要它们尽快,所以我的问题是,如果有人知道我该如何执行这些更改以更快的方式,也许与其他一些实用程序,python,perls 或任何其他......
【问题讨论】:
-
我猜你最好逐行迭代文件。 awk 似乎是一个不错的选择。
-
你能给我举个例子吗....
-
第二个文件第一列的数字似乎是多余的。
-
对不起,我的错误,已修复
-
@AndrésChandía: 抱歉,我不知道 awk,但我添加了标签,希望 awkward 的人能够帮助你。