I次のログ・ラインを持っている:は、グループ/試合の内側に置き換えるSED
2017年1月1日クライアント:ABCのID:私はそれを処理し、MySQLの中にそれを挿入する必要がある144
、時にはデータが間違って来るかもしれない:
2017年1月1日クライアント:、B .C ID:144
"Client:xxx"グループ内でのみsedの置換を実行すると、不要な文字を削除できますか?
I次のログ・ラインを持っている:は、グループ/試合の内側に置き換えるSED
2017年1月1日クライアント:ABCのID:私はそれを処理し、MySQLの中にそれを挿入する必要がある144
、時にはデータが間違って来るかもしれない:
2017年1月1日クライアント:、B .C ID:144
"Client:xxx"グループ内でのみsedの置換を実行すると、不要な文字を削除できますか?
キャプチャするために、後方参照とt
コマンドを使用し、出力のみClient:
とID
の間で文字を望んでいたが:
$ sed -r ':a;s/(Client:[^ ,.]*)[ ,.](.* ID)/\1\2/;ta;' <<< "2017-01-01 Client:a, b .c ID:144"
2017-01-01 Client:abc ID:144
すべての文字まで、次の不要な文字([ ,.]
)を除くがキャプチャされて出力されます。 t
(for test)コマンドは、置換が成功するとスクリプトの先頭(:a
ラベルまで)にループします。
まさに私が探していたもの!私はキャプチャグループについて学んだが、文字を除外する方法を知らなかった。私は何も知らない:a;と; ta;私はそれを見上げるでしょう。しかし、あなたがそれを説明し、これを他の読者にとってより有益な投稿にしたいのであれば、それは感謝しています。 – w00t
「クライアント:xxx」グループはどこで終了しますか? –