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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

AWK

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

Q&A

2回答

757閲覧

awkコマンドについて

退会済みユーザー

退会済みユーザー

総合スコア0

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

AWK

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

0グッド

1クリップ

投稿2019/01/04 06:49

編集2022/01/12 10:55

awkでmaillogの抽出を行う際、awkでフィルタリングすると思いますが、
①のコマンドは、何も表示されません。何か間違いがあるのでしょうか?

maillogの形式

Oct 7 03:14:45 mail postfix/smtpd[17770]: connect from from.example.ne.jp[192.168.1.1] Oct 3 03:14:45 mail postfix/smtpd[17770]: 5E54C38C181: client=from.example.ne.jp[192.168.1.1], sasl_method=LOGIN, sasl_username=hoge Oct 3 03:14:45 mail postfix/cleanup[17774]: 5E54C38C181: message-id= 20071002181445.5E54C38C181@from.example.com Oct 3 03:14:45 mail postfix/qmgr[17775]: 5E54C38C181: from=, size=520, nrcpt=1 (queue active) Oct 3 03:14:45 mail postfix/smtpd[17770]: disconnect from from.example.ne.jp[192.168.1.1] Oct 3 03:14:48 mail postfix/smtp[17776]: 5E54C38C181: to=, relay=to.example.com[210.*.*.*]:25, delay=3.3, delays=0.05/0.01/0.95/2.3, dsn=2.0.0, status=sent (250 2.0.0 OK 1191348889 v55si8442915pyh) Oct 3 03:14:48 mail postfix/qmgr[17775]: 5E54C38C181: removed Oct 7 09:04:03 e-algorithm postfix/qmgr[2504]: 3ED5B4029F76: from=, size=7161, nrcpt=2 (queue active) Oct 7 12:05:21 e-algorithm postfix/qmgr[2504]: 3ED5B4029F76: from=, size=7161, nrcpt=2 (queue active)


10/7 10:00~10/7 12:30までを抽出しようとしたら、何も表示されずに
終了(コマンドのエラーは無し)。maillog-1の中には、10/1~10/15までのログがあります。

awk -F - '"Oct 7 10:00" < $1 && $1 <= "Oct 7 12:30"' maillog-1

①-1
以下の用に開始日を7→07としたら10/7 10:00移行全て(log内の最後)抽出されてしましました。

awk -F - '"Oct 07 10:00" < $1 && $1 <= "Oct 7 12:30"' maillog-1

①-1
以下の様に開始日7→07としたら10/7 10:00移行全て(log内の最後)抽出されてしましました。

awk -F - '"Oct 07 10:00" < $1 && $1 <= "Oct 7 12:30"' maillog-1

①-2
そこで、終了日7→07として実行してみたところ、・・・何も表示されない。

awk -F - '"Oct 07 10:00" < $1 && $1 <= "Oct 07 12:30"' maillog-1

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

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

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

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

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

y_waiwai

2019/01/04 06:54

そのmaillogの内容はどういうものなのか、提示してください
退会済みユーザー

退会済みユーザー

2019/01/04 07:10

Postfixの/var/log/maillogです。
tatsu99

2019/01/04 08:43

回答者の全員がPostfixでメールを運用しているわけではありません。 具体的にmaillogの何行かを提示していただけると良い回答がつくかと。 (みられてまずい箇所は伏字で構いませんが、日付の部分はそのまま提示してください)
guest

回答2

0

awkの比較演算子は(awk以外でも大抵そうだと思いますが)文字列の左側から文字を一つづつみて辞書順に比較していきます。
Oct 1のように、先頭が0埋めでない日付形式に対してOct 07のような文字列との比較を試みるのはナンセンスです。
また、-F -ですが、なんでこんな訳のわからないオプションをつけたのでしょうか。結果としてこの場合は$1が行全体になってしまっています。

やりたいことはこういうことではないでしょうか。

awk '{a=sprintf("%s %02d %s",$1, $2, $3); if("Oct 07 10:00" < a && a <= "Oct 07 12:30") print}'

投稿2019/01/04 09:45

KojiDoi

総合スコア13669

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

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

退会済みユーザー

退会済みユーザー

2019/01/05 01:18

>また、-F -ですが、なんでこんな訳のわからないオプションをつけたのでしょうか。 下記サイトをそのままコピペしました。 https://hacknote.jp/archives/28246/
KojiDoi

2019/01/05 04:14

意味も解らずコピペしちゃだめですよ。
退会済みユーザー

退会済みユーザー

2019/01/05 07:19

コードありがとうございます。 1つ質問なのですが、sprintf("%s %02d %s")の%02dは、0埋めして2桁に揃えるということですが、 自動的に0埋めしてくれるのでしょうか? if("Oct 07 10:00" < a && a <= "Oct 07 12:30")の部分を if("Oct 7 10:00" < a && a <= "Oct 7 12:30")の様にしたら何も表示されなかったもので。
guest

0

こちらで、提示されたログで、
①の
awk -F - '"Oct 7 10:00" < $1 && $1 <= "Oct 7 12:30"' maillog-1
を実行すると
Oct 7 12:05:21 e-algorithm postfix/qmgr[2504]: 3ED5B4029F76: from=, size=7161, nrcpt=2 (queue active)
が表示されました。
従って、①のスクリプトで問題ないと思います。

以下、実行結果
[LINUX73 134] % awk -F - '"Oct 7 10:00" < $1 && $1 <= "Oct 7 12:30"' maillog-1
Oct 7 12:05:21 e-algorithm postfix/qmgr[2504]: 3ED5B4029F76: from=, size=7161, nrcpt=2 (queue active)

投稿2019/01/04 09:47

tatsu99

総合スコア5424

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問