【发布时间】:2013-08-15 20:36:24
【问题描述】:
我有两个如下文件:
文件1
"Connect" CONNECT_ID="12"
"Connect" CONNECT_ID="11"
"Connect" CONNECT_ID="122"
"Connect" CONNECT_ID="109"
文件2
"Quit" CONNECT_ID="12"
"Quit" CONNECT_ID="11"
文件内容与上述不完全相同,但记录数最少为100,000。
现在我想将如下所示的结果放入 file1 中(意味着最终结果应该在 file1 中)
"Connect" CONNECT_ID="122"
"Connect" CONNECT_ID="109"
我使用了类似下面的 while 循环:
awk {'print $2'} file2 | sed "s/CONNECTION_ID=//g" > sample.txt
while read actual; do
grep -w -v $actual file1 > file1_tmp
mv -f file1_tmp file1
done < sample.txt
这里我已经根据示例调整了我的代码。所以它可能有效,也可能无效。
我的问题是循环重复超过 1 小时才能完成该过程。
那么任何人都可以建议我如何通过使用diff 或comm 或sed 或awk 或任何其他运行速度更快的任何其他Linux 命令来实现相同的效果吗?
这里主要是想消除这个典型的while大循环。
【问题讨论】:
-
connect_id 是唯一的数字还是重复的?
-
我认为“缺乏”并不明显,"lakh" / "lac"(我认为您实际上是有意的)在东南亚以外也不明显。