2017-01-20 9 views
0

I次のログ・ラインを持っている:は、グループ/試合の内側に置き換えるSED

2017年1月1日クライアント:ABCのID:私はそれを処理し、MySQLの中にそれを挿入する必要がある144

、時にはデータが間違って来るかもしれない:

2017年1月1日クライアント:、B .C ID:144

"Client:xxx"グループ内でのみsedの置換を実行すると、不要な文字を削除できますか?

+0

「クライアント:xxx」グループはどこで終了しますか? –

答えて

1

キャプチャするために、後方参照と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ラベルまで)にループします。

+0

まさに私が探していたもの!私はキャプチャグループについて学んだが、文字を除外する方法を知らなかった。私は何も知らない:a;と; ta;私はそれを見上げるでしょう。しかし、あなたがそれを説明し、これを他の読者にとってより有益な投稿にしたいのであれば、それは感謝しています。 – w00t

関連する問題