[英]Return byte offset and line matching expression on a block device?
我想在塊設備(/ dev / sdb)上運行掃描,以找到表達式“某些文本”,並返回表達式的行“這是我找到的某些文本 ”。 以及以字節為單位的偏移量:
32768-這是我發現的一些文字。
我試圖使用grep -a --byte-offset "some text" /dev/sdb
但是遇到了grep:line too long
錯誤。
我知道我的LINE_MAX是2048,所以我想知道如何將該限制提高到任意大的值,或者在PERL中替換此函數?
謝謝!
未經測試,即使正確也可能不是最佳選擇:
#!/usr/bin/env perl
use autodie;
use strict;
use warnings;
{
use bytes;
open my $h, '<', '/dev/sdb';
my $offset = 0;
while (my $line = <$h>) {
while ($line =~ /ext?/g) {
printf "Line: %d\tByte: %d\n", $., $offset + $-[0];
}
$offset += length $line;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.