
Я хочу разделить свой файл на несколько файлов.
Ниже представлен файл, который у меня есть.
sort a # 3|4
sort a # 2|5
sort b # 1|2
sort b # 2|5
Я хочу, чтобы файл был разделен на следующие части:
файл1
sort a # 3|4
sort a # 2|5
файл2
sort b # 1|2
sort b # 2|5
Как вы видите, я разделил их на основе второго столбца. Поскольку у меня много разных значений для второго столбца, требуется много времени, чтобы разделить файл трудоемким способом. Как решить эту проблему?
решение1
AWK
решение:
awk '!a[$2]++{ fn="file"++c }{ print > fn }' inputfile
!a[$2]++
- проверка на наличие уникального второго значения поля,$2
используя его как индекс массиваa
. Условие!a[$2]++
будет оцененоtrue
только при первом появлении уникального$2
значенияfn="file"++c
- генерацияимя файлас увеличивающимся суффиксом++c
Просмотр результатов:
$ head file[12]
==> file1 <==
sort a # 3|4
sort a # 2|5
==> file2 <==
sort b # 1|2
sort b # 2|5
решение2
split -l 2 test
Это создаст 2 разделенных файла. Вывод разделенных файлов:
$ cat xaa
sort a # 3|4
sort a # 2|5
$ cat xab
sort b # 1|2
sort b # 2|5