2017-09-26 5 views
-1

私は非常に新しくbashで、巨大なファイルを解析する必要がある状況に直面しましたが、このファイルには、 '。'で区切られたデータのリストが含まれています。区切り文字では、列の数は行ごとにさまざまです。行に4桁の数字が含まれていると、ファイルから行全体を削除します

私の出力から除外したいパターンは:最初の4列に数字が含まれている場合。

123.123.123.123.abc.abc.abc 
123.123.123.abc.abc 
abc.abc.123.123.abc 

私は、これまでのawkを使用して、いくつかの解決策、ない成功を見ている:ここで

は、例えば、(唯一の第一行は出力から除外されなければならない)です。

ご協力いただきありがとうございます。

+0

ないが、返信に感謝を。以下に述べるgrepの解決策は私のために働く。再度、感謝します。 –

答えて

1

grepのソリューション:

grep -Ev '^([0-9]+\.){4}' file 

出力:

123.123.123.abc.abc 
abc.abc.123.123.abc 
+0

ありがとう、それは魅力のように動作します! –

+0

@no_one、あなたを歓迎します – RomanPerekhrest

+1

ありがとうございます= upvote /受け入れます。 – choroba

0

あなたは次のことを試してみて、これがあなたを助けている場合、私に知らせてもらえ。

awk -F"." 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/){next} 1' Input_file 

出力は以下の通りです。

123.123.123.abc.abc 
abc.abc.123.123.abc 

説明: DOTとしてフィールド区切りを作成し、はい、すべてのスキップれる(次の使用している場合ので、その後、AWKの一致機能を使用して、それらの桁を持って継続的な4つのフィールドを探して(。)さらなる声明)。次に、一致するパターンを持つ行から離れた行を印刷するには、ここで1を指定します。 awkでは

+0

はい、うまくいきます!ありがとう!残念ながら、担当者の不足のためにupvoteできません.. –

+0

np、それはあなたを助けてうれしい。あなたがレポ/時間を得るたびに、あなたはそれを行うことができます。 – RavinderSingh13

0

次のようにするために、2つの選択肢以下でを使用することができます..本当に

awk -F. 'NF<6' file or 
awk -F. 'NF==5' file 

123.123.123.abc.abc 
abc.abc.123.123.abc 
関連する問題