2012-03-08 139 views
1

長度是否有可能列出的記錄行號的字段#4的長度在一個命令行中不等於3?命令行列出的記錄的行號的字段#4不等於3

讓我們說我有這樣的數據(標籤分離器)

John Smith 25 O ATG 180 
Peter Jackson 40 AB GGTA 173 
Carl Anderson 32 A GGT 172 
Michael Phillips 28 B TT 165 
Lisa Mount 30 B GTAA 168 

數據在現場#4這裏有ATG,GGTA,GGT,TT,GTAA。 所以輸出應該是

2 
4 
5 

或(NULL可以用任何東西來代替)

NULL 
2 
4 
NULL 
5 

我更喜歡第一輸出。二是以防萬一第一輸出是不可能做到

回答

2

試試這個:

$ awk -F'\t' '{print $4}' input.txt | cat -n | 
    grep -Ev '[[:space:]][CTAG][CTAG][CTAG]$' | 
    awk '{print $1}' 
0

另一種解決方案,但在Perl:

perl -F'\t' -lane 'length($F[3])==3 or print $.' input.txt 

快速的解釋:

  • -a autosplits輸入的每一行
  • -F(如在@ holygeek的AWK溶液)允許定義分割圖案
  • 分割的結果可以在陣列@F
  • $.在被訪問是包含輸入的當前行號的可變