Closed blacknon closed 1 year ago
ご提案ありがとうございます。
おそらくこの機能を実装すると毎行forkが発生してしまうのでパフォーマンスは期待できなくなってしまいますね。
内部的に毎行forkするオプション(-s
オプション)が強制的に併用されてしまいますが、とはいえ利便性を上げる機能だと思うので検討してみます。
$ cat syslog | teip -f1-3 -I -- gdate -d '\1 \2 \3' "+%Y-%m-%d %H:%M:%S "
こちらの機能の提案もありがとうございますー。
残念ながら、フィールドを\1
,\2
のように、後方参照できるようにする機能は実装するつもりはないです。
teipがデータの加工まで始めるとまたややこしい話になるので。。
とはいえ、-f1-3
で3つの分裂した選択範囲(トークン)がでてきてしまうのは確かに不便に思う場面はあると思います。
私も薄々それは感じていて、現状のcut
互換の範囲指定ではなく、独自の範囲指定ルールのようなものを考えています。
https://github.com/greymd/teip/issues/8
-f1...3
で別々のトークン、-f1..3
で一つのトークン、のような使い分けができたらいいなーと。
フィールドをコマンドに渡す際に位置を指定して差し込む機能ですが v2.3.0 で -I
オプションとしてリリースしました。
使い方は README.md をご参照。
-s
オプションが強制的に有効になるので、パフォーマンスとしては高くなく、巨大なファイルの扱いには不向きな点にご注意ください。
また、該当するフィールドを結合して渡せるオプションについては、別 Issue #8 で引き続き検討しますので、この Issue については Close にします。
$ zcat test_secure.gz | head
May 26 03:19:26 localhost sshd[17872]: Received disconnect from 192.0.2.152 port 29864:11: [preauth]
May 26 03:19:26 localhost sshd[17872]: Disconnected from 192.0.2.78 port 29864 [preauth]
May 26 03:21:10 localhost sshd[17927]: Invalid user amavis1 from 192.0.2.148 port 53364
May 26 03:21:10 localhost sshd[17927]: input_userauth_request: invalid user amavis1 [preauth]
May 26 03:21:10 localhost sshd[17927]: Received disconnect from 192.0.2.189 port 53364:11: Bye Bye [preauth]
May 26 03:21:10 localhost sshd[17927]: Disconnected from 192.0.2.201 port 53364 [preauth]
May 26 03:32:03 localhost sshd[18464]: Invalid user postgres from 192.0.2.111 port 48360
May 26 03:32:03 localhost sshd[18464]: input_userauth_request: invalid user postgres [preauth]
May 26 03:32:03 localhost sshd[18464]: Received disconnect from 192.0.2.85 port 48360:11: Normal Shutdown, Thank you for playing [preauth]
May 26 03:32:03 localhost sshd[18464]: Disconnected from 192.0.2.199 port 48360 [preauth]
$ zcat test_secure.gz | head | teip -og '^([^ ]+ ){3}'
[May 26 03:19:26 ]localhost sshd[17872]: Received disconnect from 192.0.2.152 port 29864:11: [preauth]
[May 26 03:19:26 ]localhost sshd[17872]: Disconnected from 192.0.2.78 port 29864 [preauth]
[May 26 03:21:10 ]localhost sshd[17927]: Invalid user amavis1 from 192.0.2.148 port 53364
[May 26 03:21:10 ]localhost sshd[17927]: input_userauth_request: invalid user amavis1 [preauth]
[May 26 03:21:10 ]localhost sshd[17927]: Received disconnect from 192.0.2.189 port 53364:11: Bye Bye [preauth]
[May 26 03:21:10 ]localhost sshd[17927]: Disconnected from 192.0.2.201 port 53364 [preauth]
[May 26 03:32:03 ]localhost sshd[18464]: Invalid user postgres from 192.0.2.111 port 48360
[May 26 03:32:03 ]localhost sshd[18464]: input_userauth_request: invalid user postgres [preauth]
[May 26 03:32:03 ]localhost sshd[18464]: Received disconnect from 192.0.2.85 port 48360:11: Normal Shutdown, Thank you for playing [preauth]
[May 26 03:32:03 ]localhost sshd[18464]: Disconnected from 192.0.2.199 port 48360 [preauth]
$ zcat test_secure.gz | head | teip -og '^([^ ]+ ){3}' -I{} -- date -d {} "+%Y-%m-%d %H:%M:%S "
2023-05-26 03:19:26 localhost sshd[17872]: Received disconnect from 192.0.2.152 port 29864:11: [preauth]
2023-05-26 03:19:26 localhost sshd[17872]: Disconnected from 192.0.2.78 port 29864 [preauth]
2023-05-26 03:21:10 localhost sshd[17927]: Invalid user amavis1 from 192.0.2.148 port 53364
2023-05-26 03:21:10 localhost sshd[17927]: input_userauth_request: invalid user amavis1 [preauth]
2023-05-26 03:21:10 localhost sshd[17927]: Received disconnect from 192.0.2.189 port 53364:11: Bye Bye [preauth]
2023-05-26 03:21:10 localhost sshd[17927]: Disconnected from 192.0.2.201 port 53364 [preauth]
2023-05-26 03:32:03 localhost sshd[18464]: Invalid user postgres from 192.0.2.111 port 48360
2023-05-26 03:32:03 localhost sshd[18464]: input_userauth_request: invalid user postgres [preauth]
2023-05-26 03:32:03 localhost sshd[18464]: Received disconnect from 192.0.2.85 port 48360:11: Normal Shutdown, Thank you for playing [preauth]
2023-05-26 03:32:03 localhost sshd[18464]: Disconnected from 192.0.2.199 port 48360 [preauth]
日本語ですみません! すごいいいツールですね!個人マシンに早速入れさせてもらいました!
使ってて欲しいなと思った機能として、フィールドをコマンドにわたす際に標準入力ではなく
xargs -I@
みたいな形でフィールドを渡せたら便利そうだなぁと思いました。(このとき、通常だとヒットする箇所ごとにコマンドに渡してると思うんですが、%1 %2 %3...みたいな形で、該当するフィールドを結合して渡せるオプションもあると正規表現で書かないで済みそうなのでとっつきやすいかも思ったんですが、実質的には1個の機能のような気もしてるので、ここで触れさせてください)