сортировка по порядковому номеру - PullRequest
0 голосов
/ 20 мая 2011
A_xyz_01
B_mdd_01
A_djk_02
A_jfc_03
B_dmk_01
A_bcd_01
B_csd_02
B_dlf_03
A_jhf_02
B_dld_02

Я хочу, чтобы эти строки были отсортированы, как показано ниже, в соответствии с номером seq (последние две цифры каждой строки). Максимальный seq равен 03, а после 03 мне нужен seq 01 для того же идентификатора переключателя (первый символ в строке A). , В): ​​* +1002 *

A_xyz_01
A_djk_02
A_jfc_03
A_bcd_01
A_jhf_02
B_dmk_01
B_csd_02
B_dlf_03
B_mdd_01
B_dld_02

приведенный выше список фактически является выводом команды ls. у меня есть файлы, поступающие с разных коммутаторов (A, B, C). Они имеют порядковый номер в качестве третьего поля. Для каждого файла, который мне нужен, чтобы взять имя файла, сделайте что-нибудь еще. но это должно быть сделано по одному переключению за раз, что тоже мне нужно сделать это в последовательном порядке (с учетом третьего поля). Если последовательность максимальная, мне нужно иметь файл с 01 в качестве последовательности, но файл, отличный от более ранний файл последовательности 01. Этот шаг необходимо повторить, пока не завершены все файлы одного и того же ключа.

1 Ответ

1 голос
/ 20 мая 2011

Предполагается, что ожидаемый результат является приблизительным (т. Е. Второй столбец в примере вывода может отличаться):

awk -F_ '{ 
  print $0, b[$3, $1]++ 
  }' OFS=_ infile | 
    sort -t_ -k1,1 -k4,4n -k3n |
      cut -d_ -f1-3

Хотя я не проверял скрипт полностью ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...