我有一个包含一堆行的文件。我有一个与每行开头对应的字节偏移量列表。我想要与字节偏移量相对应的每一行。有没有办法在 unix、perl 或 python 中做到这一点?我必须以比描述的更大的规模来做这件事。
文件:
abcd
bcde
cdef
字节偏移:
0
10
期望的输出:
abcd
cdef
快速perl:
my @offsets = ( 0, 10 );
open (my $data, '<', 'file.txt') || die "Can't open input: $!\n";
foreach my $offset (@offsets)
{
seek( $data, $offset, 0 );
my $line = <$data>;
print $line;
}
close $data;
seek()
到所需的字节位置,然后读取。这对于 Python 和 Perl 来说应该很容易,并且可以通过 shell 脚本来实现(我在想dd
)。
当我结束时(感谢unutbu)
#!/usr/bin/python
f = open(file_name, 'r')
offsets = [0,10]
for offset in offsets:
f.seek(offset)
print f.readline().strip()
这应该这样做。
def get_lines_by_offset(filename, *offsets):
with open(filename, "r") as fp:
results = []
for offset in offsets:
fp.seek(offset)
results.append(fp.readline().strip())
return results