Найдите все строки в файле с определенным символом в определенном положении

"inode" является неофициальным термином, который относится к любому дисковому блоку данных, которые файловая система Unix использует для содержания информации, имеющей отношение к единственному файлу. "inode" традиционно содержит номера блока дисковых блоков, содержащих фактическое содержание файла. Запись каталога традиционно содержала имя файла, тип файла, и т.д. Два блока данных были разделены.

Тем не менее много Unixy-вещей падает из него. Традиционно, имя файла не было частью inode. Имя файла прибыло из "каталога", файл (который имел свой собственный inode и содержание), который подошел имя файла к inode числу. Макрос C-препроцессора позволил коду идти от inode-числа до дискового блока с очень небольшим вычислением.

Так, много имен могли относиться к тому же inode. Жесткие ссылки выходят из этого. Также - способность иметь всегда относятся к текущему каталогу без обмана. Каталог всегда содержит "." и ".." имена файлов, которые соответствуют inode числам самого каталога и каталога, в котором находится каталог "." и ".." имена файлов имеют записи в каждом каталоге. Они не особые случаи в коде файловой системы, которые действительно не имеют данных нигде.

Иерархия файлов Unix выходит из inodes. Диск является по существу линейной матрицей "блоков" определенного размера, 512 байтов, 1 килобайт, 4 килобайта, безотносительно. Inode 0 всегда был в обозначенном дисковом блоке, позволяя ядру Unix найти корень файловой системы, просто зная "inode 0", и он мог связаться "/" с inode 9. Inode 0 был также файлом каталога. "usr", "мусорное ведро", "tmp", "dev" и т.д. имело записи в inode 0. Таким образом, inodes позволяют отображать линейный список блоков данных от диска в иерархическую структуру.

Inodes жил дисковый. В исходной файловой системе Unix, первой трети или четверти диска был inodes. Остальное было блоками данных, выделенными файлам по мере необходимости, и чьи числа дискового блока закончились в inodes. Различный fileystems за эти годы (BSD FFS, например) пытался принять во внимание фактическую физическую геометрию диска путем помещения зон inodes в различных местах на диске.

Файловая система "NTFS" Winodws NT имеет что-то сразу аналогичное inode: записи в главной файловой таблице. NTFS, кажется, наследовал это от своего предка, DEC Файлы VMS 11. Файлы 11 "заголовков файлов" кажутся почти идентичными записям в $MFT.

Я нисколько не опытен с другими файловыми системами Windows/DOS (FAT, FAT32, и т.д. и т.д.), но записи в Таблице размещения файлов походят на аналоги объединенной записи каталога и inode мне. Я предполагаю, что объединение именования и иерархии наряду с данными дискового блока - то, что делает файловые системы FAT настолько хрупкими. У Вас не может быть программы, прочесывают отдельные inode дисковые данные и помещают файлы, которые они находят в "lost+found" - после того как Таблица размещения файлов повреждается, членство в блоках в данных файлов потеряно, а также членство в файлах в каталоге.

4
21.02.2012, 01:20
2 ответа

Это должно ответить на Ваш вопрос:

grep -e "^..a" < input > savefile
3
27.01.2020, 20:53
  • 1
    Хорошее и простое решение. Я не думаю -e даже необходим здесь - как grep ^..a < input > output должен быть достаточным. –   20.02.2012, 18:34

Решение, предложенное @rahmu, просто при поиске низких положений, но что при поиске числа символов 25? Вставить 25 точек?

В таком случае следующие решения могли быть под рукой. С grep

grep '^.\{24\}a' input >output

С awk

awk -F '' '$25 == "a"' input >output
3
27.01.2020, 20:53

Теги

Похожие вопросы