Удалить строки, совпадающие со словами в файле

Попробуйте

tr '[a-z]' '[f-za-e]'

Объяснение из обратного вопроса в Как работает tr '[a -z]' '[n -za -m]'?

0
20.12.2020, 17:43
3 ответа

Использование способа , рекомендованного в руководстве по GNU awk , для разбора файлов:

awk -F '.' 'pass == 1 {seen[$0]}
            pass == 2 && !($1 in seen)' pass=1 words.txt pass=2 file

При первом проходе мы сохраняем каждую строку($0)из words.txtкак ключ ассоциативного массива seen.

При втором проходе мы печатаем только строки из file, где первое поле($1)не существует, в seen.

-F '.'устанавливает разделитель полей(FS)на буквальную точку.

Выход:

816.42743   9246.4688
832.41711   8867.3076
859.42639   5776.8726
870.53418   5992.9668
875.41742   6930.3584 
877.43384   35639.199 
885.51709   60137.957
891.41595   5480.983
3
18.03.2021, 22:50
awk -F'.' 'NR==FNR{a[$1]; next} !($1 in a)' words.txt file2
2
18.03.2021, 22:50

Вы можете использовать grep, но вам нужен другой инструмент для обеспечения соблюдения требования «до точки»

grep -v -w -f <(sed 's/^/^/' words.txt) file2
  • grep может взять файл, содержащий шаблоны:-f
  • но мы хотим преобразовать файл чисел в регулярные выражения, поэтому подстановка процесса с помощью sed
  • вы хотите сопоставить целые слова:-w
  • и вы хотите инвертировать соответствие:-v
1
18.03.2021, 22:50

Теги

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