Доступна новая версия xsnow, которая работает в большинстве настольных сред. Эта версия доступна для тестирования Debian -, а последняя версия находится на sourceforge :
.
Вы можете анализировать файлы с помощьюawk
awk -F '/' '
FNR == NR {seen[$1] = $0; next}
{if ($1 in seen) print seen[$1]; else missing[$1]}
END {for (x in missing) print x}
' Temp.txt Extensions.txt
Выход:
1234/sip:1234@192.168.1.10:5060 9421b96c5e Avail 1.480
4321/sip:4321@192.168.1.11:5060 e9b6b979a4 Avail 1.855
111
-F '/'
FNR == NR
выполняется для строк первого входного файла. Сохраняем строки в ассоциативном массиве seen
как ключи и переходим к строке next
. FNR != NR
. Если первое поле совпадает, мы печатаем сохраненную строку, else
сохраняем поле в другой массив missing
. END
мы печатаем недостающие строки. Вы можете прочитать содержимое Extensions.txt
в массив, удалить частичные совпадения, а затем распечатать то, что осталось:
$ awk -F/ '
NR==FNR {a[$1]; next} {for(i in a) if($1 ~ i) delete a[i]} END{for(i in a) print i} 1
' Extensions.txt Temp.txt
1234/sip:1234@192.168.1.10:5060 9421b96c5e Avail 1.480
4321/sip:4321@192.168.1.11:5060 e9b6b979a4 Avail 1.855
111
Использование grep
+cut
:
grep -xvFf <(cut -d'/' -f1 tmp) ext >> tmp
Здесь мы в безопасности, grep
используя tmp
для подстановки ввода в процессе -по мере того, как шаблоны загружаются и записывают результат обратно в тот же tmp
файл в режиме добавления; см. объяснение по ссылке ниже:
Также можно использовать join
.
join -t"/" -a1 -e " " -o '1.1,2.1,2.2' <(awk '{ print $1"/"}' Extension.txt ) <( awk '{ print $0}' Text.txt)