Как разделить файл на маленькие файлы каждый раз, когда я встречаю значение «20» в 9 и 10 столбцах

Пакеты, которые устанавливаются как зависимости, обычно помечаются как автоматические; вы можете видеть это с помощью

apt-mark showauto xterm

Если выводится xterm, пакет был установлен автоматически; в противном случае он был установлен вручную.

Вы можете использовать aptitude, чтобы увидеть, какие зависимости удерживают установленный пакет:

aptitude why xterm

aptitude whyтакже явно скажет, был ли пакет установлен вручную.

0
27.09.2019, 13:15
2 ответа

Вы можете использовать csplitдля разделения файла на основе шаблона -:

csplit <file> <split pattern> <repetiotions>

.:

csplit -z datafile '/^........20/' '{*}'

Пояснение:

  • -z:не создавать пустой файл (поскольку вы начинаете с шаблона в первой строке, будет файл с «0-й» строки до совпадения шаблона

  • '/^........20/':Шаблон для разделения, где ^= начало строки, .= любой символ (8 раз)

  • {*}:повторяй как можно чаще

2
28.01.2020, 02:18

Вы можете использоватьawk:

awk 'BEGIN{filename=0};$0 ~ /^........20....$/{filename++};{print >> "file"filename}' input_file

При предоставленных входных данных будет получено:

file1:

0000000020DTL0
00000000510000
00000000520000   
00000000530000
00000000510000
00000000520000  
00000000530000
00000000800000

file2:

0000000020DTL0
00000000510730
00000000520000
0000000053 000
00000000510000
00000000520000 
00000000530000
00000000800000
2
28.01.2020, 02:18

Теги

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