Нельзя использовать цикл while, потому что требуется время, есть ли какой-либо способ быстрее получить окончательный файл.. в linux [дубликат]

-1
29.09.2016, 01:05
1 ответ

Мне кажется, что ваш код распечатывает каждую строку file_1.txt, если только (а) строка не содержит name или (b) первые два столбца строки совпадают с предыдущей строкой, содержащей name . В этом случае попробуйте:

$ awk '/name/{bad[$1,$2];next} !(($1,$2) in bad)' file_1.txt 
150 300
150 300
150 250
150 250

Как это работает

  • / name / {bad [$ 1, $ 2]; next}

    Если текущая строка содержит name , мы добавляем запись в ассоциативный массив плохой под ключ первых двух столбцов. Затем мы пропускаем остальные команды и переходим к следующей строке , чтобы начать заново.

  • ! (($ 1, $ 2) неверно)

    Если первые два столбца текущей строки, $ 1, $ 2 являются , а не среди ключей bad , затем выведите эту строку.

1
28.01.2020, 05:10

Теги

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