タグ

2021年11月16日のブックマーク (6件)

  • wc -lでは文末に改行がないファイルの行数を正しく数えられない - grep Tips *

    最後に改行がある場合は以下の通り問題ない。 $ printf 'test\ntest\n' test test $ printf 'test\ntest\n' | wc -l 2 wc -lは改行の数を数えるため、最後に改行がないと当の行数より1少ない数を返してしまう。 $ printf 'test\ntest' test test$ $ printf 'test\ntest' | wc -l 1 対策としては、grep -c ''で空文字に合致する行数を求めることで代用したり、awkのENDとNRを活用したり、sedの現在の行数を出力する=と最終行$を活用したりする方法がある。 $ printf 'test\ntest' | grep -c '' 2 $ printf 'test\ntest' | awk 'END{print NR}' 2 $ printf 'test\ntest'

    wc -lでは文末に改行がないファイルの行数を正しく数えられない - grep Tips *
  • gzip圧縮率を確認する方法 - grep Tips *

    標準出力をgzipしてファイルを保存している場合など、元のファイルのサイズがわからないときに、伸長して圧縮率を確認したいときがある。 gzip -l, gzip --listを使うと説明されることが多いが、gzip -lには以下のバグがあるため利用しないほうがいい。 gzip 形式では、入力サイズは 2^32 の余りで表現されるため、 --list オプション による表示では、圧縮前のファイルが 4GB 以上の場合、圧縮前のサイズや圧縮率が 正しく表示されない。 引用元: https://linuxjm.osdn.jp/html/GNU_gzip/man1/gzip.1.html 実際に伸長するとDISK容量が足りなくなるおそれがあるので、標準出力に伸長して、wc -cに流すことでバイト数を取得する。 標準出力に伸長する方法は以下の通り3つほどある。下に行くほどおすすめ。gzipではcom

    gzip圧縮率を確認する方法 - grep Tips *
    katsush
    katsush 2021/11/16
  • Fluentdの監視 - grep Tips *

    Fluentdの監視項目 Fluentdの監視をしたい項目は四つ。 port監視 バッファーに蓄積されているキューの数が上限に達していないか バッファーに蓄積されている合計サイズが上限に達していないか 再送を試みた回数が上限に達していないか 1のport監視はTCP通信であればZabbixの「シンプルチェック」で簡単に確認できる。 net.tcp.service[tcp,,24224] in_monitor_agentプラグイン 2, 3, 4を監視する方法として、in_monitor_agentプラグインを使用する。 https://docs.fluentd.org/v1.0/articles/in_monitor_agent 以下のようなsyslogからAmazon CloudWatch Logsにログを転送する設定があるとする。 <source> @type syslog port

    Fluentdの監視 - grep Tips *
  • Jinja2のWhitespace Controlを理解して、きれいなファイルを出力する - grep Tips *

    Jinja2のWhitespace Control Python 3.6.5 Jinja 2.10 Jinja2でforやifを使ってテンプレートを書くと、出力される文字列に空行が多く入ってしまう。これはforやifのみが書いてある行にある改行も出力されてしまうから。 Jinja2にはWhitespace Controlという機能があり、この出力を制御できる。 Whitespace Controlでは+と-記号を使うのだが、空行削除の目的では-をforやifにつける。e.g. {%- if ... %} -をつける場所は4か所あり、どこにつけるかによって挙動が変わる。具体的に出力を見るほうが理解しやすいため、4か所それぞれに-をつけて出力を見ていく。 for文でのWhitespace Control挙動確認 用意したのは以下の通り何も設定しない場合と4パターン。 #!/usr/bin/en

    Jinja2のWhitespace Controlを理解して、きれいなファイルを出力する - grep Tips *
  • grepとhead, tailは一緒に使うべきではない - grep Tips *

    はじめに grepしてファイルから条件に合致する行を抜き出したいが、はじめから数行だけでいい場合や、うしろから数行だけでいい場合、安易にgrepとheadもしくはtailを組み合わせてはいけない。 headの代わり 例えば、次のようなコマンドを書いた場合、sample.txt全部をgrepで処理してから、結果の最初の1行を返すことになるので、sample.txtが大きなファイルだと時間がかかる。 grep sample_cond sample.txt | head -1 grepには-m NUM, --max-count=NUMオプションがあり、マッチした行数が NUM に達したら、ファイルの読み込みを中止することができる。適切なコマンドは以下になる。 grep -m 1 sample_cond sample.txt tailの代わり うしろから数行だけを取得する場合は、少しテクニックが必

    grepとhead, tailは一緒に使うべきではない - grep Tips *
    katsush
    katsush 2021/11/16
  • ON DUPLICATE KEY UPDATEをAUTO_INCREMENTのテーブルには発行しない方がいい - grep Tips *

    AUTO_INCREMENTはINSERTするたびにカウントアップして発番してくれるが、ON DUPLICATE KEY UPDATEを使用してINSERTではなく既存行のUPDATEになった場合もカウントアップされてしまう。実際にINSERTしている行数はたいしたことがないのに、ON DUPLICATE KEY UPDATEされる回数が多いせいで、AUTO_INCREMENT値が大きくなってしまい、INTなどの比較的小さい型にしていた場合にAUTO_INCREMENTが上限値に達してしまう。 以下のテーブルをもとにINSERTされていないのにAUTO_INCREMENT値が増えていることを実際に確認する。 mysql> CREATE TABLE on_dup_autoinc (id INT AUTO_INCREMENT PRIMARY KEY, ukey CHAR(1) UNIQUE K

    ON DUPLICATE KEY UPDATEをAUTO_INCREMENTのテーブルには発行しない方がいい - grep Tips *
    katsush
    katsush 2021/11/16