Сортировка следующих 5 строк вместе с сортировкой соответствующего столбца в текстовом файле - PullRequest
0 голосов
/ 12 октября 2018

Я новичок в Unix и форматирование текстового файла через Unix.У меня есть длинный шаблон кода Fortran в файле, который генерируется во время компиляции

CASE('a')
 IF(use.eq.1)
  do something1
 ELSE
   do something2
CASE('e')
 IF(use.eq.1)
  do something3
 ELSE
   do something4
CASE ...
.
.
. So on

У меня около 200 случаев в одном операторе switch.В некоторых случаях переменная повторяется и неупорядочена, как будто они не расположены один за другим.

Я хочу отсортировать все эти случаи в алфавитном порядке. Так что повторяющиеся случаи могут быть сгруппированы и объединены в одно дело.

Может кто-нибудь помочь мне, пожалуйста ....

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Perl решение: - Это то, что вы ищете?

> cat case.txt
CASE('a')
 IF(use.eq.1)
  do something1
 ELSE
   do something2
CASE('e')
 IF(use.eq.1)
  do something3
 ELSE
   do something4
CASE('c')
 IF(use.eq.1)
  do something1
 ELSE
   do something2
CASE('x')
 IF(use.eq.1)
  do something3
 ELSE
   do something4
CASE('a')
 IF(use.eq.12)
  do something1
 ELSE
   do something2
CASE('e')
 IF(use.eq.13)
  do something3
 ELSE
   do something4
>  perl -ne ' if($.%5!=0) { chomp; print } else { print "\n" } ' case.txt| sort -t\' -k2
CASE('a') IF(use.eq.12)  do something1 ELSE
CASE('a') IF(use.eq.1)  do something1 ELSE
CASE('c') IF(use.eq.1)  do something1 ELSE
CASE('e') IF(use.eq.13)  do something3 ELSE
CASE('e') IF(use.eq.1)  do something3 ELSE
CASE('x') IF(use.eq.1)  do something3 ELSE
>
0 голосов
/ 12 октября 2018

Unix знает только один стандартный инструмент для сортировки и команду sort.Но, увы, он сортирует только строки , а не целые блоки.

Итак, что вы могли бы сделать (но это довольно забавно, предупреждаем):

  1. Преобразование всех блоков в однострочники.
  2. Сортировка однострочников.
  3. Преобразование всех однострочников обратно в блоки.

В зависимости от того, как выглядят ваши блоки, это может быть легко или сложно.Пожалуйста, напишите комментарий, описывающий вашу блочную структуру более подробно, если вы думаете, что этот способ будет чем-то для вас, тогда я расширю свой ответ.

...