Совместное использование Интернета одной карты WiFi через точку доступа другой карты WiFi

$ perl -lne '
   /00[2468]$/ ? $h{$_} : $A[@A] = $_; }{
   print for @h{qw/008 006 004 002/}, @A;
' file.txt

Хранить в отдельных контейнерах совпадающие и несовпадающие строки. Когда придет время их распечатать, вытащите заказ из анонимного массива ключей в хэш %h.

Пояснение:

  • Когда мы читаем в каждой строке, смотрим, содержит ли она совпадающую строку, те, которые заканчиваются на 2, 4, 6 или 8. Сохраняйте их в хеше %hс ключом, являющимся всей совпадающей строкой $h{$_}. ].
  • OTW, в случае несоответствия переместите несовпадающую строку в конец массива @A.
  • После того, как мы увидели конец файла, мы сначала печатаем хэш %h. Как вы знаете, доступ к хэшам по своей сути является случайным. Но мы должны наложить приказ, поскольку это было одним из ваших требований. Итак, мы задаем порядок, перечисляя ключи в том порядке, в котором вы хотите, чтобы они отображались.:qw/008 006 004 002/Это анонимный массив. Это напечатает $h{008}, за которым следует $h{006}и так далее.
  • После этого печатается array @Aс несовпадающими строками. КЭД.
  • Теперь, если вы поменяете порядок печати массива @Aи hash slice @h{...}, вы увидите, что совпадающие элементы перемещаются на юг, а не на север.
  • Код просто выводится на стандартный вывод, который вам придется вернуть в исходное состояние:perl '...' file.txt > /tmp/file.txt; mv /tmp/file.txt file.txt
2
20.07.2021, 20:31
0 ответов

Теги

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