Linuxで7文字以下の行をファイルから削除したい


Linuxでファイル内の文字数が7以下の行を削除して、8文字以上だけにしたいのですが、調べてもどのコマンドを組み合わせて実行すればいいのか分かりません。

例  
a.txt

[code]

    aaaa
    aaaaaaaaa
    aaaaaaaa        
    aaaaaaaaaaaaaa
    aa
    
[/code]

↓  
a.txt

[code]

    aaaaaaaa
    aaaaaaaaaaaaaa
    
[/code]

こんな感じにしたいです。  
よろしくお願いします。




空白を考慮せず、単純に7文字以下の行を削除する方法です。

[code]

    cat a.txt | sed '
    /^$/d
    /^.$/d
    /^..$/d
    /^...$/d
    /^....$/d
    /^.....$/d
    /^......$/d
    /^.......$/d
    '
    
[/code]

以下の記述を追加すれば、行末の空白を削除できます。

[code]

    s/[ ][ ]*$//
    
[/code]

* * *

ファイルを書き換える版です。exを使っています。

[code]

    ex a.txt <<EOF
    /^.......$/d
    /^......$/d
    /^.....$/d
    /^....$/d
    /^...$/d
    /^..$/d
    /^.$/d
    /^$/d
    x
    EOF
    
[/code]

以下の記述を追加すれば、行末の空白を削除できます。

[code]

     %s/[ ][ ]*$//
    
[/code]




たくさんあるよ。

## sed

[code]

    sed -ne '/.\{8\}/p' a.txt
    
[/code]

## perl

[code]

    perl -nle 'print if length > 7' a.txt
    
[/code]

## awk

[code]

    awk 'length > 7' a.txt
    
[/code]

## grep

[code]

    grep '.\{8\}' a.txt
    
[/code]

