sed:特定のパターンをその間の任意の文字列に置き換えます


0

私は読みやすくするためにログファイルをクリーンアップしようとしています-私のニーズに合わせて不必要なものがたくさんあります-私は基本的にsshd [xxxx]を置換する必要があります。何もない。既知の文字列を置き換えることはできますが、この場合にsedワイルドカードを実行する方法はわかりません。

回答:


1

「sshd」も置き換えるかどうかは明確ではないので、そうだと思います。

   sed 's/sshd\[[0-9]*\]//g' file

そうでなければ、

   sed 's/sshd\[[0-9]*\]/sshd[]/g' file

最初のものは私が探していたものでした、ありがとう:)
ジャーニーマンオタク

1

あなたは、内部のすべての数字を何も置き換えないことを探しています。番号を選択するには、範囲を使用できます。ここで、任意の数字と一致し、その前の1つ以上を意味します。sshd[][0-9]\+[0-9]\+

したがって、あなたの場合、数字をゼロに置き換える正規表現は

sed -r s/\[[0-9]\+\]/\[\]/

ここで、-r上記のような拡張正規表現が有効になります。\[そして\]ちょうど脱出している[と、]そう、彼らはによって解釈されませんsed

以下のような正規表現の演算子のために\+見てい本節gawkのように文字のリストについては、マニュアルを[0-9]参照して、このセクションを -あなたが見るもののほとんどをするが適用されsed、同様。


sed -r s/\[[0-9]\+\]/\[\]/[]を番号なしで保持するために、である必要はありませんか?
スナーク

@snarkあなたは正しいです
ベンジャミンバニエ

1
-rコマンドを引用する場合は、省略できます。両方を行う(-rコマンドを使用して引用する)場合は、+のエスケープを省略できます。sed 's/\[[0-9]\+\]/\[\]/'またはsed -r 's/\[[0-9]+\]/\[\]/'、グループ化-rされたかっこがある場合、かっこをエスケープする必要がないため、引用符を付けて使用すると、いくつかの文字を節約し、読みやすくすることができます。
デニスウィリアムソン

@デニス面白い
ベンジャミンバニエ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.