Укажите строки в awk?

Я собираюсь использовать этот awk-скрипт для удаления повторяющихся строк из моего текстового файла:

awk '!x[$0]++' 

Однако я хочу указать, какие строки они должны запускать.

Может быть 10000 дубликатов, но я бы хотел только удалить дубликаты из строк 10020 в 10030.

В моем случае это от 24 до 655. Было бы проще, если бы это были слова, где я мог бы {$24, $655} (или что-то подобное). Но я не уверен, как указать строки в этом случае. Если это важно, я использую awk-версию 20070501.

One Solution collect form web for “Укажите строки в awk?”

Вы могли бы сделать что-то вроде этого:

 awk -v low=24 -v high=655 'NR >= low && NR <= high{if (!a[$0]++) print; next};{print}' file 

или еще лучше

  awk -v low=100 -v high=200 'NR < low || NR > high || !a[$0]++' test.file 
  • Другие альтернативы команды столбца
  • изменить файл с помощью awk или sed
  • Выровнять шестнадцатеричный текстовый файл по 9 байт каждой строки
  • сортировать CSV по количеству столбцов в строках?
  • Как сохранить смешанные форматы перевода строки в gawk?
  • Сценарий Awk работает только в том случае, если я редактирую текстовый файл вручную
  • Как объединить разные строки файлов?
  • только отображают строки df, которые имеют больше fs, чем 80%
  • Поиск конкретных слов и удаление всех строк после него
  • Как печатать из заданного диапазона ip-адресов каждый класс-c с последним октетом, замененным звездочкой
  • использовать awk для замены скобок?
  • Как напечатать несколько строк из середины файла с помощью команд оболочки unix?
  • Linux и Unix - лучшая ОС в мире.