给定每行一个非负整数的文件 L 和文本文件 F,仅保留 F 中那些行号出现在文件 L 中的行的快速方法是什么?
例子:
$ cat L.txt
1
3
$ cat F.txt
Hello World
Hallo Welt
Hola mundo
$ command-in-question -x L.txt F.txt
Hello World
Hola mundo
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个可以处理包含 5 亿个或更多条目的文件 L 的命令;文件 L 按数字排序。
注意:我正在实现 a 的一半,command-in-question但我只是想知道,是否也可以在这里使用一些 Unix 工具。
更新:感谢所有的答案,我今天学到了很多!我想接受更多一个答案,但这是不可能的。
我正在搜索从以下格式的文件中获取的命令:
hello 32
hello 67
hi 2
ho 1212
ho 1390
ho 3000
Run Code Online (Sandbox Code Playgroud)
对于这种格式(通过获取“组”的最后一行进行重复数据删除):
hello 67
hi 2
ho 3000
Run Code Online (Sandbox Code Playgroud)
目前我正在使用 Python 和 Pandas 代码段:
df = pd.read_csv(self.input().path, sep='\t', names=('id', 'val'))
# how to replace this logic with shell commands?
surface = df.drop_duplicates(cols=('id'), take_last=True)
with self.output().open('w') as output:
surface.to_csv(output, sep='\t', cols=('id', 'val'))
Run Code Online (Sandbox Code Playgroud)
更新:感谢您的精彩回答。以下是一些基准:
输入文件为 246M,包含 8583313 行。顺序无关紧要。第一列的固定大小为 9 个字符。
输入文件示例:
000000027 20131017023259.0 00
000000027 20131017023259.0 11
000000035 20130827104320.0 01
000000035 20130827104320.0 04
000000043 20120127083412.0 01
...
Run Code Online (Sandbox Code Playgroud)
time space complexity
tac …Run Code Online (Sandbox Code Playgroud) 是否有任何实用程序可以在命令行上从流中过滤样本,例如
更新:到目前为止我发现:
sed -n '0~100p'