Почему sed q работает иначе при чтении из канала?

Если у вас есть - или вы можете установить - пакет ImageMagick, в нем есть утилита identify , которая может распечатать гистограмму цветов в файле; Программа awk, представленная ниже, просканирует вывод identify -verbose на предмет количества цветов и цветов, перечисленных в гистограмме. Если в списке указан только один цвет и единственные цвета на гистограмме белые, тогда будет возвращено «успех», в противном случае - «неудача».

Затем вы можете обернуть сценарий оболочки вокруг awk и идентифицировать соответствующие файлы:

for f in images/*
do
  identify -verbose "$f" | awk -f iswhite.awk && echo "$f is an all-white image"
done

iswhite.awk :

/Histogram:/ {
  inhisto=1
}
inhisto && /[[:digit:]]+: \([ [:digit:]]{3},[ [:digit:]]{3},[ [:digit:]]{3}\) #/ {
  if ($0 !~ /#FFFFFF white/) { nonwhite=1 }
}
/Rendering intent/ {
  inhisto=0
}
/Colors: / {
  ncolors=$2
}
END {
  if (ncolors == 1 && nonwhite == 0) { exit 0 } else { exit 1 }
}
25
22.08.2016, 19:20
0 ответов

Теги

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