2011-10-18 13 views
0

私は以下の同じ構文に従う多くの行を持つapplication.logを解析しようとしています。私はc:\websites\と次\sedでログファイルからディレクトリを抽出

例えば間でリストされているものを引き出すためにコマンドのいくつかのタイプを使用する必要があり

"Error","jrpp-237","10/13/11","02:55:04",,"File not found: /indexUsa~.cfm The specific sequence of files included or processed is: c:\websites\pj7fe4\indexUsa~.cfm '' " 

この場合には、私は残念ながら、さらに読んでから、私は今、これは\を通じてc:\websitesを含む行全体を返すことを理解し、私が必要

bin/sed -n '/c:\\websites\\/,/\\/p' upload/test.log 

..次のコマンドが働くだろうと思ったpj7fe4

だろう間には、ライン全体ではなく、知っている。

もっと難しくなるためには、複数のサイトのための1つの特定の行だけでなく、すべてのディレクトリのサブパスに一致する必要があります。

答えて

1

範囲パターンを誤って使用しています。このコマンドを使用して、行の一部(行の範囲のみ)にコマンドを制限することはできません(この場合はprint)。あなたはまた、バックスペースをエスケープしません。

これを試してみてください:Sed - An Introduction and Tutorial by Bruce Barnett

0

grepの方法:

grep -Po "(?<=c:\\\websites\\\)[^\\\]+(?=\\\)" yourFile 

テスト:

kent$ echo '"Error","jrpp-237","10/13/11","02:55:04",,"File not found: /indexUsa~.cfm The specific sequence of files included or processed is: c:\websites\pj7fe4\indexUsa~.cfm '' "'|grep -Po "(?<=c:\\\websites\\\)[^\\\]+(?=\\\)" 
pj7fe4 
sed 's/.*c:\\websites\\\([0-9a-zA-Z]*\)\\.*/\1/'

ここで良いのsedチュートリアルがあります

関連する問題