私のプロジェクトは、ログファイルから特定のデータを抽出することです。bash、regex、後処理行と列のデータ
データには列と行があります。いくつかはテキスト文字列であり、いくつかは数値です。
awk '{if($1 == text1Exp || textExp2 || textExp3) {print $1, $2}}' file.log
まあ、そううまく動作しなかった:私はこのように見えたもの(年齢前)に動作するために使用さawkコマンドを試してみましたIに興味を持っていた情報の行のみを抽出するために
。私は私が欲しかっただけのデータで200以上のファイルを処理し
for i in `ls`; do awk '/Counter/ || /IfInErrors/ || /IfOutErrors/ {print $0}' $i > $i.csv; done
:私はよく働い短いスクリプトを作っ
awk '/Counter/ || /IfInErrors/ || /IfOutErrors/ {print $0}'
:検索は私によく働い次の構文を与えました。今では、タブとスペースがすべて1つの長さに設定されたcsvファイルとしてインポートできるデータが必要でした。私は繰り返し、次を使用して、これを達成:続く
sed -i 's/ */ /g' *.csv # all tab white space and white space set
:
sed -i "s/ /,/g" *.csv # substitute spaces with a comma.
データのフォーマットをクリーンアップし、いくつかの他の置換がありました。 (。; I verは0.2Aでそれを修正します、私は主要なカンマについて知っているが、怠け者だ)
,Counter Name,port 1/1/x33,port 1/1/x34,port 1/1/x35,port 1/1/x36
,IfInErrors:,0,0,0,0
,IfOutErrors:,0,0,0,0
,Counter Name,port 1/1/x37,port 1/1/x38,port 1/1/x39,port 1/1/x40
,IfInErrors:,**95**,0,0,0
,IfOutErrors:,0,0,0,0
:今、私はこのようなクリーン探してデータを持っています。
- は& & IfOutErrors
- IfInErrorsためNON ZERO値の数をカウントして行を無視IfInErrorsためZERO値の数をカウントし& & IfOutErrors
- :
は、私は、次の達成したいですカウンタ...
- IfInErrorsのNON ZERO値の合計を報告してください。& & IfO utErrorsと
- レポートをファイルにゼロ値の合計をキャプチャし、要件4.
残念ながらバッタで作成したファイル内の合計をキャプチャし、これはあなたのスクリプト-FUを超えると、マスターは述べています。 :(
は、私はいくつかのオンラインのクラスを試してみたけど、彼らは助けている間、私は苦労し、私が実行して最高の学び見つけるよ...よく、あなたが知っている、
をExell内のデータを操作しようとしたが、 、およびメンターでの作業。私は...デビッドCaradinを助けたが、彼が引退だと棒で私を襲っているブラインドSholinモンクを見つけること
任意のヒントを試してみた?
問題は、明らかに、あなたは誤って綴られていますShaolin ;-)。簡潔でテスト可能なサンプル入力と予想される出力を含むように質問を編集すれば、おそらく助けになるでしょう。 –