- ベストアンサー
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} ' [ファイル名] 文法的に誤っていますでしょうか?? 回答宜しくお願い致します。
- みんなの回答 (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セットでやりたいのなら、このやりかたでは難しいでしょう。
お礼
色々とすいません。kmeeさん。 kと'の間がつまっているのは ⇒貼り付け時です。 メッセージは ⇒syntaxエラー系のメッセージですね。内容は理解出来ませんでした。 2行1セットのやり方はご存知ですか??