2012-01-30 4 views
2

だから私は、このsedコマンドは、$ 1ウィッヒに適用してきた私が知りたいのですがどのファイル はどのようにsedを評価するすべてのスラッシュ、バックスラッシュ 次々とどのようなパターンのいずれかの文字がsedのパターンコマンド

を意味しているのです
sed '/^\/\*/d/.*\*\//d' $1 

は、私の知る限り

'/^ ....../d' 

- 何を(第2のDを考慮して)行の初めに、いくつかのパターンを削除します以下のための第1のDスタンドを行い、ドットおよび/または/ \(アンエスケープの文字?)

について何を誰かが私にこれをしてください説明してくださいだろうか?

+2

読みくださいhttp://www.grymoire.com:

ラインの開始時に一緒にすべてを入れて、そして何これが行うことは、Cスタイルのコメントを削除することですが、彼らが表示されている場合のみ/Unix/Sed.html。がんばろう。 – shellter

答えて

3

これは、実際に背中合わせに2つのsedのコマンドです:

/^\/\*/d 
/.*\*\//d 

^試合が行の先頭、\/\*リテラルアスタリスクと一致し、リテラルスラッシュと一致します。 (スラッシュとアスタリスクは、「メタ文字」であるため、彼らは文字通り一致するように、バックスラッシュでエスケープする必要があります。)

.*マッチ任意の文字シーケンスは、\*が再びリテラルアスタリスクと一致し、\/はリテラルスラッシュにマッチします再び。

/* This will go away */This will stay 
+0

は、私はそうlitteralyそれは私が単に /^\/\/\.*/dを持っているでしょう//する/*....*/変更された場合、すべての/*....*/インライン が削除されます参照してください? コメントが複数行に拡張する場合についてどのような(私は区切りのいくつかの並べ替えを使用するか、いくつかの場合のと一緒に仕事をしなければならないのでしょうか?) –

+1

はい、あなたの例では、行の末尾に '//'から削除しますが、場合のみです( '^'で固定しているので)行頭で開始します。私はsedを使って複数行のコメントを扱うことはできないと思います。 perlやawkのようなステートフルなものが必要です。 – Nemo

+0

これはあなたが素晴らしいのに役立ちました – Hovanky