2017-06-27 20 views
0

約一些文件的utilite nconvert產品信息:正則表達式:確定從utilite輸出信息使用grep

nconvert -info file.tiff 

輸出

** NCONVERT v7.00 (c) 1991-2017 Pierre-E Gougelet (Apr 18 2017/09:49:26) ** 
     Version for Windows NT/9x/2000/Xp/Vista/7 (All rights reserved) 
** This is freeware software (for non-commercial use) 

Over... 

file.tiff : Success 
    Format    : TIFF 
    Name     : tiff 
    Compression   : CCITT Group 4 
    Width    : 3194 
    Height    : 5056 
    Components per pixel : 1 
    Bits per component : 1 
    Depth    : 1 
    # colors    : 2 
    Color model   : RGB 
    Bytes Per Plane  : 400 
    Orientation   : Top Left 
    Xdpi     : 600 
    Ydpi     : 600 
    Page(s)    : 30 
    Info: 
     Photometric Interpretation: White=0 
     PhotometricInterpretation: 0 
     PlanarConfiguration: 1 
     SamplesPerPixel: 1 
     Software: LIBFORMAT (c) Pierre-e Gougelet 
    Metadata    : (EXIF) 

我需要提取用grep數字信息。假設,我想定義的頁數,我用

nconvert -info file.tiff | grep -oP "(?<=Page\(s\)).*$" 

我得到:

 : 30 

但我只需要數30

修改下面也沒有帶來預期的結果

nconvert -info efile.tiff | grep -oP "(?<=Page\(s\)\s+\:).*$" 

我怎樣才能得到冒號後的信息?

回答

1

您可以使用此grep

nconvert -info efile.tiff | grep -oP 'Page\(s\)\h*:\h*\K\d+' 
30 

\K將重置匹配信息。

您還可以使用awk

nconvert -info efile.tiff | awk -F '[: \t]*' '$2=="Page(s)"{print $3}' 
30 
1

您需要積極的回顧後轉換與\K比賽重新運營商這裏允許值之前,你需要提取可變寬度模式:

grep -oP 'Page\(s\)\s*:\s*\K.*' 

這裏,

  • Page\(s\) - 匹配Page(s)
  • \s*:\s* - 匹配:附帶0+空格
  • \K - 忽略迄今
  • .*匹配的文本 - 該行的其他部分相匹配。
1
nconvert -info file.tiff | 
sed -n '/^[[:space:]]*Page\(s\)/{s/^[^[:digit:]]*//;p}' 

應該這樣做。 __

說明

  • sed-n限制了它在打印每行到輸出。默認情況下,它會打印一切
  • /pattern/是不言自明的,也就是說尋找一個模式,用兩個正斜槓包圍它。
  • /^pattern/會在線路
  • /^[[:space:]]*Page\(s\)/尋找一條線,然後Page(s)
  • 如果我們發現了線以上部分的開頭任意數量的空格的開始的模式,然後sed處理在花括號內的命令{commands}
  • 第一個命令是替代格式爲s/patten/substitution/
  • 在正則表達式
  • []用於字符範圍,例如[A-Z][0-9]
  • 但字符類也可與[:digit:]字符類是一樣的0-9通過把一個^[]你否定的開始特定的人物類。所以簡而言之,s/^[^[:digit:]]*//表示在開始時刪除任何非數字字符。備註*表示任何zero or more次。
  • p最後打印行。也不是sp命令之間用分號隔開
+0

請問您能否給我介紹一下''...''之間的什麼意思? – Sergio

+0

@Sergio:我已經提出了一些解釋:) – sjsam