1

私はAWKを初めて使用します。awkを使用してファイルから行を読み取る方法を教えてください。読み取り行から部分文字列関数を使用して値を取得し、それを変数に格納するにはどうすればよいですか?たとえば、データセットは次のとおりです。

01 001   410070300186169                 359829047319420
01 002   410070234186169                 359829043245420
01 001   410070234186169                 359829047319420

4〜6の位置で、値が「001」の場合はファイルfile_1にデータを書き込み、値が「002」の場合はファイルfile_2にデータを書き込みます。

4

3 に答える 3

2

どうぞ; これをすべて1行にまとめることができますが、読みやすくするために複数に分割しました。

awk '$2=="001" {print > "file_1"}
     $2=="002" {print > "file_2"}' input_file

説明:

  • awkデフォルトでは、区切り文字としてスペースとタブを使用して各行をフィールドに分割します。そのため、読み取られた行ごとに、2番目の列の値がに保存されます。$2
  • $2=="001" {print > "file_1"}:の場合、行全体をに印刷し$2ます001file_1
  • $2=="002" {print > "file_2"}:同様に002
于 2012-12-11T21:11:29.483 に答える
1

次のように、awk1ライナーですべてを行うことができます。

awk '$2 == "001" {print > "file_1"} $2 == "002" {print > "file_2"}' infile
于 2012-12-11T21:10:52.690 に答える
0

あなたは$0に読み込むことができます

getline <file

その後、あなたは使用することができます

 substr($0, 1 , 5)

長さ5のインデックス1から始まる$0のサブストリングを取得します

于 2012-12-11T20:50:26.203 に答える