#!/bin/sh
count_match() {
grep -x -n -F -f "$1" "$2" | sed 's/\([0-9]*\):\(.*\)/\2 \1/' | sort
}
count_match file2 file1 > /tmp/$$A
count_match file1 file2 > /tmp/$$B
join /tmp/$$[AB]
rm /tmp/$$[AB]
Это используемые опции grep
:
-n
печатать номера совпадающих строк
-x
искать только целые строки
-F
искать литеральные строки - никаких регулярных выражений
-f filename
читать шаблоны поиска из файла (в нашем случае либо file1, либо file2)
Используйте sed
, чтобы изменить порядок полей и убрать двоеточие :
.
отсортируйте
вывод.
соединить
содержимое двух временных файлов.
Это демонстрирует использование и вывод команд в приведенном выше примере:
$ grep -n -F -f file2 file1
1:ABC
3:MNO
$
$ grep -x -n -F -f file2 file1 | sed 's/\([0-9]*\):\(.*\)/\2 \1/'
ABC 1
MNO 3
$
$ grep -x -n -F -f file1 file2 | sed 's/\([0-9]*\):\(.*\)/\2 \1/'
ABC 3
MNO 7
$
Включение отладки с помощью переменной окружения XDG_UTILS_DEBUG_LEVEL
помогло:
$ XDG_UTILS_DEBUG_LEVEL=2 xdg-mime default ~/.gnome/apps/gthumb.desktop
image/png
make_default_kde: No kde runtime detected
make_default_generic /home/gauthier/.gnome/apps/gthumb.desktop image/png
Updating /home/gauthier/.local/share/applications/mimeapps.list
$ XDG_UTILS_DEBUG_LEVEL=2 xdg-mime query default image/png
Checking /home/gauthier/.config/mimeapps.list
eog.desktop
Значение mimeapps.list
, используемое для установки и чтения значений по умолчанию, отличается. Решение (благодаря комментарию здесь):
rm ~/.config/mimeapps.list