UNIX系のコマンドで次のような処理をする方法を教えてください。


データのヘッダ行が与えられた条件を満たしたときに、ヘッダそのものと次のヘッダ行までのデータを取り出す。

例:
以下のようなin.fileのヘッダ行の$2=="A"の場合のみ、ヘッダ行とその下のデータを取り出す。

"in.file"
> A
28 9
27 10
30 6
> B
-67 5
-65 9
-50 5
> A
200 5
223 4

"out.file"
> A
28 9
27 10
30 6
> A
200 5
223 4

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2012/02/22 13:08:45
  • 終了:2012/02/22 14:03:36

ベストアンサー

id:nattow No.1

nattow回答回数102ベストアンサー獲得回数272012/02/22 13:48:45

ポイント100pt

awk での一例

awk 'BEGIN{f=0}{if($1==">"){if ($2 == "A"){f=1; print $0}else{f=0}}else{if(f==1){print $0}}}' in.file > out.file

もうちょっとコマンドを駆使してスマートにやる方法があるかもしれませんが・・・。

id:spin6536

できました!ありがとうございます!

2012/02/22 14:03:00

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません