2017-09-13 10 views
0

いくつかの開発作業では、フォルダに格納された一連のログファイルからいくつかの「ノイズ」を除去する必要があります。私は、行全体を削除し、中には何も残らないしたい私は[MISC ]:を参照してくださいログファイルから行を削除し、行なしで既存のファイルを更新する

Sep 5/2017 23:59:50:324 [MISC ]: ValueType:ST/SetId:/ObID:0002-d007^RhySta^MDIL/ObSubID:0/Detail:Sinus Rhythm/Units:/AccessChecks:/ObxTimeStamp: 

いつでも:(。私は、Linux上でこれを持っているだけでなく、Windowsでこれを行うことができます)私は削除する行は次のようになります。その場所。ファイルから行が削除されるとすぐに、ファイルを既存の名前で保存して、そのフォルダ内の次のファイルに移動したいと思っています。

私はスクリプタではありませんので、援助の要請です。

+0

'for' + 'sed' +' mv'を使用します。幸運 – RomanPerekhrest

+0

私はあなたがスクリプタではないことを理解していますが、これは基本的にあなたのためにコードを書くための他の人の要求です。あなたは自分でそれを試みなければなりません。スクリプトを書いて、それを完成させる方法について質問があれば、それが私たちが手助けできる場所です。 –

+0

複数のファイルの作業に関する部分を無視します。一つのファイルで何をしたいのかを行うスクリプトを書いてから、 'find'やループを使って各ファイルのスクリプトを呼び出します。誤って作成しているファイルをループすることには注意してください。一番簡単な解決方法は、別のディレクトリに新しい出力ファイルを作成し、完了したら元のファイルを削除することです。 –

答えて

0

ここではfor, find, sed and mv.を使用して行います。

サンプルDIR:

[zee]$ find . 
./test2/file1.tx 
./test2 

ワンライナー:上記のワンライナーを実行しているの

[zee]$ for file in $(find test1/ -type f) ; do echo "checking if file $file has a match" ; grep -q "MIS" $x ; if [ $? -eq 0 ]; then echo "$file has a match" ; sed -i '/MIS/d' $file && echo "deleted matches...moving $file" && mv $file test2/ ; fi ; done 

出力:ここ

checking if file test1/file1.tx has a match 
test1/file1.tx has a match 
deleted matches...moving test1/file1.tx 

は、それが何をするかである:すべてのファイルを検索ディレクトリ "test1"で、指定されたファイルが一致するかどうかを調べます。ファイルに一致するものがある場合は、一致するファイルを削除し、そのファイルをディレクトリ "test2"に移動します。

関連する問題