@vlarkanov

Сравнение текстовых файлов: как отобразить строки, которые есть в первом, но нет во втором?

Всем привет! Есть два текстовых файла. Содержат имена файлов (по одному в строке, не повторяются). Порядок может отличаться.
Как найти строки, которые есть только в первом файле, но нет во втором (положение в файле неважно)
  • Вопрос задан
  • 177 просмотров
Решения вопроса 3
keydon2
@keydon2
...
$ grep -f 2.txt -v 1.txt
spoiler
3
4

$ cat 1.txt
spoiler
1
2
3
4
5

$ cat 2.txt
spoiler
1
2
5
6
7
Ответ написан
vaut
@vaut
man uniq
cat file1 file2 file2 | sort | uniq -u
Ответ написан
@xibir
загоняем оба файла в ассоциативные массивы, проходим по первому массиву и смотрим чего нету во вотром

#!/bin/bash
declare -A map1 map2

IFS=$'\n'
while read line; do
   map1["$line"]=1
done < /tmp/file1.txt

while read line; do
   map2["$line"]=1
done < /tmp/file2.txt

for k in ${!map1[@]}; do
   [[ "${map2[$k]}" ]] || echo $k
done
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы