• ベストアンサー

awkでのsh処理について

HP-UX環境、UNIXです。 1行目の11カラム目にOUTが含まれているかつ2行目の11カラム目にINが含まれている行だけ ファイルに出力するという処理を以下のように考えたんですが、うまくいきません。 awk'{m == NR % 2} m==1{if($11~ "OUT")} && m==0{if($11~ "IN") print $0} ' [ファイル名] 文法的に誤っていますでしょうか?? 回答宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

べたなロジックですが cat ファイル名 | awk '\ BEGIN { FILE=-1 } {  if (substr($0,11,3)=="OUT") {   LINE=NR  }  if (NR==(LINE+1) && substr($0,11,2)=="IN") {   print $0  } } END {}' > 出力ファイル名 ではいかがでしょうか。(インデントのために全角空白が入っています) 「sh処理」は何を言っているのか分かりません。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

実際やったらエラーになるでしょ。 そのエラーメッセージは読んでますか? とりあえず > awk'{m == NR % 2} kと'の間がつまっているのは元からですか?貼り付けたときに変わていまったのですか? > m==1{if($11~ "OUT")} && この&&はなんでしょう? なお、2行1セットでやりたいのなら、このやりかたでは難しいでしょう。

chabakof
質問者

お礼

色々とすいません。kmeeさん。 kと'の間がつまっているのは ⇒貼り付け時です。 メッセージは ⇒syntaxエラー系のメッセージですね。内容は理解出来ませんでした。 2行1セットのやり方はご存知ですか??