GNU/Linux >> Linux の 問題 >  >> Linux

テキストファイルのn番目の列を取る

iirc:

cat filename.txt | awk '{ print $2 $4 }'

または、コメントに記載されているように:

awk '{ print $2 $4 }' filename.txt

cut を使用できます コマンド:

cut -d' ' -f3,5 < datafile.txt

版画

1657 19.6117
1410 18.8302
3078 18.6695
2434 14.0508
3129 13.5495

  • -d' ' - つまり、space を使用します 区切り文字として
  • -f3,5 - 3 列目と 5 列目を印刷してください

cut ずっと速い 純粋なシェル ソリューションとして大きなファイルの場合。ファイルが複数の空白で区切られている場合は、次のように最初にそれらを削除できます:

sed 's/[\t ][\t ]*/ /g' < datafile.txt | cut -d' ' -f3,5

(gnu) sed は tab を置き換えます または space 単一の space を持つ文字 .

バリアントの場合 - これも perl ソリューションです:

perl -lanE 'say "$F[2] $F[4]"' < datafile.txt

完全を期すために:

while read -r _ _ one _ two _; do
    echo "$one $two"
done < file.txt

_ の代わりに 任意の変数 (junk など) ) も使用できます。ポイントは、列を抽出することです。

デモ:

$ while read -r _ _ one _ two _; do echo "$one $two"; done < /tmp/file.txt
1657 19.6117
1410 18.8302
3078 18.6695
2434 14.0508
3129 13.5495

Linux
  1. Linuxでファイルの終わりにテキストを追加する方法

  2. テキストファイルの最後にテキストを追加しますか?

  3. テキスト ファイルから改行を削除するにはどうすればよいですか?

  1. テキストファイルの行末を見つける方法は?

  2. LinuxコマンドSortを使用して、テキストファイルを4列目の数値順にソートする方法は?

  3. .txt ファイルに書き込みますか?

  1. この awk コマンドの出力をファイルに保存する方法は?

  2. ファイルにテキストを追加するにはどうすればよいですか?

  3. 1 つのテキスト ファイルを複数の *.txt ファイルに分割する方法は?