我有一台配备 Intel(R) Pentium(R) CPU G640 @ 2.80 GHz 和 8 GB RAM 的 PC。我正在使用 EXT3 文件系统在其上运行 Scientific Linux 6.5。
在此设置中,我可以sort -u在 200 GB 文件上执行的最快方法是什么?
我应该将文件拆分为较小的文件(小于 8 GB)sort -u,将它们放在一起,然后再次以不同的大小sort -u再次拆分它们,等等?或者是否有任何排序脚本、程序可以用我有限的 RAM 处理这么大的文件?
如何根据“groupName”删除重复的行并保留该行directoryId="1"?
<Group id="123" groupName="ABC" lowerGroupName="abc" active="1" local="1" createdDate="2017-08-21 09:28:30.581" updatedDate="2017-08-21 09:28:30.581" type="GROUP" directoryId="10100"/>
<Group id="456" groupName="ABC" lowerGroupName="abc" active="1" local="0" createdDate="2017-08-21 09:28:30.634" updatedDate="2017-08-21 09:28:30.634" type="GROUP" directoryId="1"/>
Run Code Online (Sandbox Code Playgroud) 如果输入是
foo,bar,baz
bar,baz,qux
qux,quux,baz
bar,foo,qux
waldo,fred,garply
Run Code Online (Sandbox Code Playgroud)
输出应该是
foo,bar,baz
bar,baz,qux
waldo,fred,garply
Run Code Online (Sandbox Code Playgroud)
如您所见,记录根据第 3 列的值进行了重复数据删除。如果多个记录具有相同的第 3 列值,则随机选择一个(或第一个;无关紧要)
我有以下文件(请注意,它们========实际上存在于文件中):
start ======== id: 5713
start ======== id: 5911
start ======== id: 5911
end ========= id: 5911
start ======== id: 6111
end ========= id: 5713
start ======== id: 31117
Run Code Online (Sandbox Code Playgroud)
我想删除具有相同 id 且分别具有start和end的任意两行。
基于上面的例子,输出将是:
start ======== id: 5911
start ======== id: 6111
start ======== id: 31117
Run Code Online (Sandbox Code Playgroud)
如何用bash, awk, sed... 做到这一点?