その最初の行の内容に基づいて列を検索する

その最初の行の内容に基づいて列を検索する

TSVしたがって、次のファイルがあります。

Hello world how are you
1 2 3 4 5
6 7 8 9 0

(上記の手紙のおもちゃの例では、各行のすべての内容をスペースで区切っています。)

私の目標は、「how」と「are」を含む列を最初の行値として取得することです。したがって、出力は次のようになります。

how are
3 4
8 9

問題は、これらのパターン(「どのように」や「is」)がどの列に表示されるのかわからないことです。たとえば、TSVファイルは実際には次のように配置できます。

Hello how world are you
1 3 2 4 5
6 8 7 9 0

たとえば、私はこれを処理する方法を知っていますがpython(ファイルを変更して必要な行を選択するだけです)、シェルでこれを実行したいのです(理由のため)。問題はどうするか分からないということです。コマンドラインユーティリティを使用して転置も可能であることを知っています(例を参照)。ここ)しかし、可能であれば、そのような大きなコードは避けたいと思います。私の初期の単純な解決策は単にgrep「どのように」と「is」でしたが、それは明らかにファイル全体を返すので、それはブロックされ続けます。

どんな助けやアドバイスにも感謝します!

編集:このコンピュータに新しいツールをインストールする権限がないことに注意してください。私はそれが実際に何を提供しているのか分からない。役立つ場合はこれですScientific Linux 7.3 (Nitrogen)

ベストアンサー1

使用csvtool1:

csvtool -t ' ' -u ' ' namedcol how,are file

-t Input separator char.
-u Output separator char.

 namedcol <names>
    Assuming the first row of the CSV file is a list of column headings,
    this returned the column(s) with the named headings.

^sudo apt install csvtool

おすすめ記事