2番目の列値に基づいてファイルを分割する

2番目の列値に基づいてファイルを分割する

2番目の列に基づいて、以下のファイルを2つのファイルに分割するのに役立ちますか? (値1で始まるグループと次の2行を加算したグループは1つのファイルに存在し、値0.1で始まり、次の2行を加算したグループは1つのファイルになければなりません。1つのファイル)

A 1
A 10
A 100
B 0.1
B 1
B 10
C 1
C 10
C 100
D 0.1
D 1
D 10

期待される出力ファイル1:

A 1
A 10
A 100
C 1
C 10
C 100

期待される出力ファイル2:

B 0.1
B 1
B 10
D 0.1
D 1
D 10

ありがとうございます! !

ベストアンサー1

$ cat tst.awk
!(c&&c--) {
    out = "out" ($2 == 1 ? 1 : 2)
    c = 2
}
{ print > out }

$ awk -f tst.awk file

$ head out?
==> out1 <==
A 1
A 10
A 100
C 1
C 10
C 100

==> out2 <==
B 0.1
B 1
B 10
D 0.1
D 1
D 10

バラより印刷には sed- または awk-a-line-follow-a-matching-pattern を使用します。what c&&c--doesや他の同様のawkイディオムについてです。

おすすめ記事