2017-09-06 6 views
1

ログファイルでは、「IMPRESSION DE LA TABLE」というパターンで始まるすべての行を40文字に切り捨てたいと思います。どうやってやるの?例えば特定の文字列で始まる行を切り捨てる

、file.logは行が含まれている場合:

IMPRESSION DE LA TABLE A.B.C   12345 
            ^40th character 

を、私は維持したいと思います:

IMPRESSION DE LA TABLE A.B.C   

私は絶対に私の中で(ABCをテーブルの名前を維持する必要があります例)。 GNUで

sed 's/ IMPRESSION DE LA TABLE.*/ IMPRESSION DE LA TABLE/g' file.log 

答えて

3

は後方参照を使用して、sedの:

sed '/^\s*IMPRESSION DE LA TABLE/s/^\(.\{40\}\).*/\1/' file 
  • /^\s*IMPRESSION DE LA TABLE/:ラインの開始時に、私は、パターンを次のものを削除することができますが、私は他の文字を維持することはできませんsedの

    付きゼロ個以上の空白が続いてIMPRESSION DE LA TABLE

  • s/^\(.\{40\}\).*/\1/:最初の40文字がキャプチャされ、 \1で出力します。
+1

魅力的な作品です。どうも! – Simpom

0

だけのawkを使用します。

すべてのUNIXシステム上で任意のシェルで任意のawkをしていきますし、あなたの文章は、簡単代わりに正規表現の文字列関数を使用するように微調整しています正規表現のメタ文字を含めることができる場合
$ awk '/ IMPRESSION DE LA TABLE/{print substr($0,1,40)}' file 
    IMPRESSION DE LA TABLE A.B.C 

$ awk 'index($0," IMPRESSION DE LA TABLE")==1{print substr($0,1,40)}' file 
    IMPRESSION DE LA TABLE A.B.C 
関連する問題