如何使用awk打印特定的字符列

时间:2015-08-04 14:40:36

标签: bash awk

我想在文件的每一行打印第55-60个字符。我必须这样做,因为我有一个FORTRAN格式的文件,并且每行上没有相同数量的字段分隔符:

HETATM 3109  O   HOH B 999      10.307  26.441  12.306  0.26 30.00           O
HETATM 3110  O   HOH B1000      10.905  26.874  14.064  0.20 30.00           O

字符55-60是顶行的第10个字段,底行的第9个字段。 如何使用awk打印字符55-60

2 个答案:

答案 0 :(得分:6)

使用-c中的cut

$ cut -c55-60 file
  0.26
  0.20

来自man cut

  

-c , - characters = LIST

     

仅选择这些字符

sed

$ sed -r 's/.{54}(.{6}).*/\1/' file
  0.26
  0.20

awksubstr()

$ awk '{print substr($0,55,6)}' file
  0.26
  0.20

答案 1 :(得分:0)

您可以尝试:

rev file | awk '{print $3}' | rev