質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

Q&A

解決済

2回答

2365閲覧

AIX 抽出条件での行抜出し処理

tear_spell

総合スコア11

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

0グッド

0クリップ

投稿2016/11/28 06:19

編集2016/11/28 07:27

AIXサーバ上のテキストファイルA(testA.log)から、
抽出条件を含んだ行をテキストファイルB(testB.log)に抽出するシェルの作成を考えております。
ただ、抽出条件数が多い(600程度)ため、リストファイル(list.log)を作成しテキストファイルAと突き合せて抜出したいと考えています。

リストファイルには以下のようにキーワードを記載しテキストファイルAと突合せたいです。

aa
bb
cc

ksh、AWKを使用して上記抽出する処理は作成可能でしょうか?
初心者のため、可能であれば方法をご教示お願い致します。

追記
現在は抽出条件がふたつのため、以下で抜出しています。
listを読み込んで付き合わせる箇所の処理が不明なため、ご教示お願い致します。

cat ${testA.txt} | awk 'NR%2{sl=$0;next}{print sl,$0}' | awk '{if ($9 ^/ftpd/) print}' | awk '{if ($12 ^/download/) pint}' > ${testB.txt}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

aa bb cc ~ のどれか1つでも含まれる行を出力したいのであれば、

Bash

1fgrep -f list.log testA.log > testB.log

と思ったのですが、書かれているのを見ると、
「9カラム目にftpdが含まれて、かつ、12カラム目にdownloadが含まれる」ということですかね?
(なお、~(正規表現マッチ)と書くべき所を^(数学の冪乗)とタイプミスしているので、このif文条件は常に真になります)
それだと、文字列だけじゃなくて、カラム番号もlist.logに無いといけませんね。

もう一度、自分のやりたいことを整理してください。

投稿2016/11/28 08:31

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tear_spell

2016/11/28 09:16

ご教示ありがとうございます。 申し訳ありません、「~」のタイプミスでした。 条件としては、 「9カラム目にftpdが含まれて、かつ、list.log内のaa bb cc ~ のどれか1つでも含まれる」となります。 教えていただいた「fgrep -f list.log testA.log > testB.log」に「9カラム目にftpdが含まれて」を追加する事は可能でしょうか。 お手数おかけして申し訳ありませんがご教示をお願いします。
tear_spell

2016/11/28 10:12

試したところ、以下で抽出できそうでしたが問題ありますでしょうか? ご確認お願いします。 cat ${testA.txt} | awk 'NR%2{sl=$0;next}{print sl,$0}' | awk '{if ($9 ~/ftpd/) print}' | fgrep -f list.log > ${testB.txt}
otn

2016/11/28 12:32

良いと思いますが、${testA.txt} は testA.txt の間違いでしょうか。 コードは、すべてコピペして下さい。
tear_spell

2016/11/29 00:25

ご確認ありがとうございます。 申し訳ありません。${testA.txt}は testA.txt になります。 上記コードを組み込んで正常に稼動を確認出来ました。 大変助かりました、ありがとうございました。
guest

0

AWK であれば、問題なく処理を書けると思いますよ。

投稿2016/11/28 06:30

mugicya

総合スコア1046

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問