Как обработать две строки одной командой jq?

Вы сравниваете строку var1со строкой update1. Они никогда не будут прежними. Вместо этого вы хотите сравнить переменные:

if [ "$var1" = "$update1" ]

Конечно, все это можно упростить до:

sudo apt update | grep -q "package can be upgraded" && notify-send "Updates are available"
0
06.01.2020, 14:09
1 ответ

Я мог бы попробовать ввести следующую команду

sed -z 's/\n/,/g;s/,$/\n/' <(comm -3 <(echo "${str1//,/$'\n'}" | sort) <(echo "${str2//,/$'\n'}" | sort))

Проведенные испытания

$ str1='(a),(c),(b),(d)'
$ str2='(a),(b)'
$ sed -z 's/\n/,/g;s/,$/\n/' <(comm -3 <(echo "${str1//,/$'\n'}" | sort) <(echo "${str2//,/$'\n'}" | sort))
(c),(d)

Подстановка параметров оболочки

echo "${str1//,/$'\n'}

заменяет запятые на новые строки.

Так как команда commтребует сортировки значений

echo "${str1//,/$'\n'}" | sort

Чтобы избежать замены новой строки последней строки

sed -z 's/\n/,/g;s/,$/\n/'

Примечание. -zизменяет разделитель на нулевые символы (\0). Это может иметь свои ограничения .

0
28.01.2020, 02:57

Теги

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