我有一堆行文件。我有一个与每行开头对应的字节偏移列表。我希望每行与字节偏移量相对应。有没有办法在unix,perl或python中执行此操作?我必须以比描述更大的规模来做到这一点。
文件:
abcd
bcde
cdef
字节偏移:
0
10
期望的输出:
abcd
cdef
答案 0 :(得分:5)
with open(filename, 'r') as f:
for offset in offsets:
f.seek(offset)
print(f.readline())
参考文献:
答案 1 :(得分:4)
Quickie 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;
答案 2 :(得分:1)
当我结束时(感谢unutbu)
#!/usr/bin/python
f = open(file_name, 'r')
offsets = [0,10]
for offset in offsets:
f.seek(offset)
print f.readline().strip()
答案 3 :(得分:0)
seek()
到所需的字节位置,然后读取。这应该很容易从Python和Perl开始,并且可以从shell脚本中完成(我在思考dd
)。
答案 4 :(得分:0)
这应该这样做。
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