Какой год программа “tar” Unix становилась выпущенной?

Вот awk сценарий, который ищет многострочную строку (соответствия должны состоять из целых строк). Это получает текст для поиска в переменной needle. Сценарий работает путем создания окна w строки (где w количество строк в needle) и сравнение этого против needle.

awk -v needle='b 38.\nc 81.\nc 92.\n' '
    BEGIN {
        if (substr(needle, length(needle)) == "\n")
            needle = substr(needle, 1, length(needle)-1);
        w = split(needle, needles, "\n");
        getline window
        for (i = 2; i < w; i++) {getline; window = window "\n" $0}
    }
    { window = window "\n" $0 }
    window == needle {print NR - w + 1}
    { window = substr(window, index(window, "\n") + 1) }
' 

Это не самый эффективный способ искать подстроку, потому что каждая строка в файле данных по сравнению с каждой строкой в шаблоне. Существуют более эффективные алгоритмы, которым удается выполнить меньше сравнений путем создания некоторых предварительных вычислений в шаблоне, таких как Knuth-Morris-Pratt.

Для файла, который подходит удобно к памяти, я считал бы все это сразу и выполнил бы поиск в памяти. Если все, что Вы ищете, является соответствием шаблона, это легко сделано в Perl, но Perl испытывает недостаток в примитивах для эффективного отслеживания строки. Вот сценарий Python, который ищет многострочную строку (который должен быть передан как таковой).

import re, sys
needle = sys.argv[1]
haystack = sys.stdin.read()
pos = 0
line = 1
for m in re.finditer(needle, haystack):
    line += haystack.count("\n", pos, m.start())
    pos = m.start()
    print line

Использование: python -c '…' $'b 38.\nc 81.\nc 92.\n'

1
08.03.2013, 21:47
4 ответа

Первый Выпуск UNIX включал программу резервного копирования на магнитную ленту, названную "касанием". Так как это было разработано на основе возможностей Первой файловой системы Выпуска, это не имело понятия "группы" (Первый Выпуск только имел "пользователя" и "другие" биты полномочий), и использовал 16-разрядный формат времени. Четвертый Выпуск UNIX расширил возможности файловой системы и заменил "касание" новой "tp" программой для создания и чтения резервных копирований на магнитную ленту. Точно так же, когда Седьмой Выпуск, UNIX был выпущен в январе 1979, он показал новый набор функций файловой системы и новую программу резервного копирования на магнитную ленту, названную "tar" (для "Ленты ARchiver").

Так, 1979 это.

Источник: https://github.com/libarchive/libarchive/wiki/FormatTar

9
27.01.2020, 23:10

tar не был в v6, но был в v7, если это помогает.

3
27.01.2020, 23:10
  • 1
    Вы абсолютно корректны! репозиторий –   08.03.2013, 23:23

Tar GNU является значением по умолчанию на большей части GNU/дистрибутивов Linux. Это основано на реализации общественного достояния pdtar, который запустился в 1987.

От Wiki.

2
27.01.2020, 23:10

Формат был создан в первые годы Unix и стандартизирован POSIX.1-1988

1988

http://en.wikipedia.org/wiki/Tape_archive

0
27.01.2020, 23:10

Теги

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