Проблема сценариев Bash - сравнивает два списка и создает одну треть

xwininfo -root -children | grep -q '"Firefox")'
echo "$(($? == 0))"

Произвел бы 1, если существует окно класса Firefox подключенный к Вашему X-серверу (любым пользователем от любой машины).

Ограничить Firefox обрабатывает локальный для машины, куда Вы выполняете ту команду:

xwininfo -root -children |
  awk '/"Firefox"\)/{print $1}' |
  xargs -I% xprop -id % WM_CLIENT_MACHINE |
  cut -d\" -f2 |
  grep -qFx "$(uname -n)"

Поиск именем процесса не дает Вам гарантии, что процессы на самом деле отображают свое окно на Вашем X-сервере.

Метод, описанный выше, согласовывается с тем, как Firefox проверяет на в настоящее время под управлением Firefox при отсутствии передачи --no-remote опция.

4
11.12.2014, 20:05
3 ответа

Для ответа на одну часть вопроса можно использовать grep с флагом -F для сравнения разницы между двумя файлами. Затем я объединил это с -v, чтобы убрать разницу за то, что мне нужно;

grep -vxFf $TMPFILE001 $TMPFILE002 > $TMPFILE003
1
27.01.2020, 20:51

Посмотрите на команду comm. Возьмите следующие два файла

f1.txt

item1
item2
item3
item4
item5
item6

f2.txt

item1
item2
item22
item3
item4

Output

$ comm -23 f1.txt f2.txt
item5
item6

man page entry для Comm

5
27.01.2020, 20:51

Или, если вы предпочитаете, вы можете сделать это:

diff file1 file2 | grep "<" | sed 's/^<\ //g' > file3

1
27.01.2020, 20:51

Теги

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