考虑这个PDF 'colorpages.pdf‘链接
我有两个命令来知道a)我的PDF中有多少彩色页面b)使用了哪种页面颜色。
首先)我使用
gs -o - -sDEVICE=inkcov colorpages.pdf | grep -v "^ 0.00000 0.00000 0.00000" | grep "^ " | wc
然后我得到一个数字(带有颜色的页面总数)。
对于b)我使用
gs -o - -sDEVICE=inkcov colorpages.pdf |tail -n +5 |sed '/^Page*/N;s/\n//' |sed -E '/Page [0-9]+ 0.00000 0.00000 0.00000 / d'
这给了我一个包含颜色信息的很好的列表;
Page 1 0.00000 0.00000 0.00000 0.99454 CMYK OK
Page 2 0.00000 0.99228 0.00000 0.00000 CMYK OK
Page 3 0.99222 0.00000 0.00000 0.00000 CMYK OK
Page 4 0.99289 0.99289 0.99289 0.99289 CMYK OK
Page 5 0.99316 0.99316 0.00000 0.00000 CMYK OK
Page 6 0.99130 0.99130 0.99130 0.99130 CMYK OK
Page 7 0.00000 0.00000 0.00000 0.99392 CMYK OK
Page 8 0.00000 0.00000 0.00000 0.99189 CMYK OK
Page 9 0.00000 0.00000 0.00000 0.99128 CMYK OK
Page 10 0.00000 0.00000 0.98594 0.00000 CMYK OK
Page 11 0.00000 0.98908 0.98908 0.00000 CMYK OK
Page 12 0.00000 0.00000 0.00000 0.98682 CMYK OK
但我需要(另外)是一个逗号分隔的所有页面的颜色使用列表。
跟进
该命令
gs -o - -sDEVICE=inkcov colorpages.pdf |tail -n +5 |sed '/^Page*/N;s/\n//' |sed -E '/Page [0-9]+ 0.00000 0.00000 0.00000 / d' | awk '$3!=0 && $4!=0 && $5!=0{if(length(colored))colored=colored","$2;else colored=$2} END{print colored}'
给出了下面的列表1,2,3,4,5,6,7,8,9,10,11,12
。但它应该是2,3,4,5,6,10,11。
发布于 2019-03-05 05:24:40
awk '$3!=0{if(length(colored))colored=colored","$2;else colored=$2} END{print colored}'
2,5,7
-->echo "$x"
Page 1 0.00000 0.00000 0.00000 0.12395 CMYK OK
Page 2 0.00016 0.00035 0.00017 0.47061 CMYK OK
Page 3 0.00000 0.00000 0.00000 0.34571 CMYK OK
Page 4 0.00000 0.00000 0.00000 0.32637 CMYK OK
Page 5 0.00016 0.00035 0.00017 0.47061 CMYK OK
Page 6 0.00000 0.00000 0.00000 0.63394 CMYK OK
Page 7 0.00016 0.00035 0.00017 0.47061 CMYK OK
echo "$x" |awk '$3!=0{if(length(colored))colored=colored","$2;else colored=$2} END{print colored}'
2,5,7
如果col3,4,5需要为0
才能调用一行着色,那么:(你可以试试这些条件)
awk '$3!=0 && $4!=0 && $5!=0{if(length(colored))colored=colored","$2;else colored=$2} END{print colored}'
更新
您可以使用OR运算符(||
)来获得问题中提到的所需结果。
echo "$x" |awk '$3!=0 || $4!=0 || $5!=0{if(length(colored))colored=colored","$2;else colored=$2} END{print colored}'
2,3,4,5,6,10,11
https://stackoverflow.com/questions/54991314
复制相似问题