2012-07-23 58 views
1

我在讀取特定行和特定位置的字符串時遇到問題。我有一個輸入文件,每個行中的每個值都有固定的位置和固定的長度。這是我的輸入文件的示例:如何閱讀特定行和特定位置?

sltele  Hoodie 24051988 d12Hdq 
sltele  Hoodie 07051987 d30Hdq 
sltele  Hoodie 07082011 d08Hdq 
sltele  Hoodie 09081961 d04Hdq 
sltele  Hoodie 20041962 d14Hdq 
sltele  Hoodie 20032000 d01Hdq 
sltele  Hoodie 13062002 d05Hdq 

我需要在第一行的第3列中讀取一個字符串。所以,我用這個

awk 'NR==1 {print $2, $3}' inputfile.inp 

我怎樣才能得到一個確切的結果與字符位置作爲參數? (第12,第18和第21,第28號)

回答

4

使用cut -c

詳細信息請參考手冊頁。

也u可以使用以下:上述

echo "abcdefghij" | awk '{print substr($0,2,2),substr($0,6,2)}' 
bc fg 

是從第二位置2個cahracters和從第六位置2個字符。

您的解決方案將是:

awk 'NR==1 {print substr($0,12,6),substr($0,21,7)}' inputfile.inp 

上述命令將獲得由第12位,從第21位的6chars和7個字符的行號1

+0

謝謝皮特:)這是我想要的解決方案。再次感謝你 :) – faizal 2012-07-23 07:19:31

0

您可以使用sed的太:

sed -rn "1 [email protected]{11}(.{7}).{2}(.{8})@\1\[email protected]" filename 

說明:

  • -n不打印線
  • 小號取代
  • 僅第一線
  • 。{11}省略11個字符
  • ({7 })保存7個字符(char 12-18)
  • 。{2}省略2個字符(19-2 0)
  • ({8})節省8個字符(21-28)
  • \ 1 \ 2替換與所述第一串和第二保存
  • p打印行指定的行