如何按列号过滤那些数据?

时间:2019-02-04 08:00:26

标签: bash grep

下面是我的数据的一部分。

......
  CN= 1 SBSDRYTGT     17146      H     17144      O  1.066
  CN= 2 SBSDRYTGT     17145      H     17144      O  1.130     13034      O  1.489
  CN= 4 SBSDRYTGT      7308     AL     17144      O  2.034     10965      O  1.764     10385      O  1.728      8896      O  1.791
  CN= 1 SBSDRYTGT     17146      H     17144      O  1.086
  CN= 1 SBSDRYTGT     17145      H     17144      O  1.039
  CN= 4 SBSDRYTGT      7308     AL     17144      O  2.039     10965      O  1.757     10385      O  1.730      8896      O  1.758
  CN= 1 SBSDRYTGT     17146      H     17144      O  1.069
  CN= 1 SBSDRYTGT     17145      H     17144      O  1.023
  CN= 4 SBSDRYTGT      7308     AL     17144      O  2.055     10965      O  1.790     10385      O  1.715      8896      O  1.825
  CN= 1 SBSDRYTGT     17146      H     17144      O  1.092
  CN= 1 SBSDRYTGT     17145      H     17144      O  1.046
  CN= 4 SBSDRYTGT      7308     AL     17144      O  2.035     10965      O  1.770     10385      O  1.701      8896      O  1.799
  CN= 1 SBSDRYTGT     17146      H     17144      O  1.103
  CN= 1 SBSDRYTGT     17145      H     17144      O  1.058
  CN= 4 SBSDRYTGT      7308     AL     17144      O  2.037     10965      O  1.783     10385      O  1.750      8896      O  1.797
......

我想显示列号等于11的数据,例如

CN= 2 SBSDRYTGT     17145      H     17144      O  1.130     13034      O  1.489

注意:请不要在列中使用任何值,因为这些值可能不同。我只需要列号等于11的数据。 任何进一步的帮助和建议,将不胜感激。

1 个答案:

答案 0 :(得分:2)

以下脚本将打印所有包含11列的行:

awk NF==11 yourfile

要打印严格超过11列的所有行,请使用

awk 'NF>11' yourfile

并打印严格少于11列的所有行,请使用

awk 'NF<11' yourfile