У меня есть следующий файл данных
10
AA 21.1218 14.7862 0.0566269
BB 26.5036 14.5513 19.975
CC 7.82448 1.30605 50.126899
AA 10.0179 4.3786 21.232036
BB 4.80236 4.23255 36.217038
CC 31.475 9.60365 7.237505
AA 8.39392 5.89571 10.30242
......
10
AA 21.1218 14.7862 0.0566269
BB 26.5036 14.5513 19.975
CC 7.82448 1.30605 50.126899
AA 10.0179 4.3786 21.232036
BB 4.80236 4.23255 36.217038
CC 31.475 9.60365 7.237505
AA 8.39392 5.89571 10.30242
......
Каждый блок данных состоит из 12 строк и повторяется 100 раз (общее количество файлов 1200). Отсюда я узнал, что могу сортировать внутри блока данных, но как мне справиться с первыми двумя строками каждого набора данных? Это строки заголовка, поэтому их необходимо сохранить.
Итак, я надеюсь иметь такой файл, как
10
AA 21.1218 14.7862 0.0566269
AA 10.0179 4.3786 21.232036
AA 8.39392 5.89571 10.30242
BB 26.5036 14.5513 19.975
BB 4.80236 4.23255 36.217038
CC 7.82448 1.30605 50.126899
CC 31.475 9.60365 7.237505
......
10
AA 21.1218 14.7862 0.0566269
AA 10.0179 4.3786 21.232036
AA 8.39392 5.89571 10.30242
BB 26.5036 14.5513 19.975
BB 4.80236 4.23255 36.217038
CC 7.82448 1.30605 50.126899
CC 31.475 9.60365 7.237505
......
я пытался
awk '{print int((NR-1)/12), $0}' file.txt | sort -nk1 > result
Но это не сработало для меня. Кроме того, как я могу работать с первыми двумя строками заголовка при сортировке по первым столбцам?
Спасибо
Лучший,
OFS="\t"
просто устанавливает разделитель полей вывода на тот же символ, которыйcut
использует в качестве разделителя полей ввода (также известного как разделитель), поэтому сценарий awk добавляет 4 поля, которые будут использоваться для сортировки в начале каждой строки, а затем вырезание удаляет их снова после этого. Я бы порекомендовал вам просто посмотреть промежуточный вывод awk, а затем команды сортировки, чтобы лучше понять, что они иcut
делают. Кроме того, добавьте несколько операторов печати в каждый из блоков действий awk, чтобы увидеть, что они делают и в каких строках ввода выполняется каждый из них. 30.07.2015