2016-06-21 26 views
1

私は数千本のファイルを持っています。私は、文字列がファイル全体で一貫して9文字であることを確認する必要があります。そうでなければ、文字列が長さ9文字ではなく、どこでもエラーをスローします。文字列の長さを確認してください -

xxxxxxxxx,xxx 

最初の9文字は常に9文字にする必要があり、そうでない場合はエラーをスローします。

------ ERRORS ------ 
Errors found at _, _, _, _, _, _ ...etc. 

答えて

2

あなたがawkを使用することができる:最初のフィールドは

  • print "ERROR at line "NRに沿ってエラーメッセージを出力9つの文字長い場合

    awk -F, 'length($1) !== 9 {print "ERROR at line "NR}' file 
    
    • F,,
    • length($1) !== 9チェックにフィールド区切り文字を設定します行番号NR
  • +0

    ($ 2)<= 9999の値を追加できますか? –

    +0

    もちろん、それは 'length($ 1)!== 9 ||長さ($ 2)!== 9999 {print ... ' – hek2mgl

    +0

    これは9999でない$ 2をすべて出力しますか?9999よりも大きいものだけを出力しますか? –

    2

    grepを使用すると、一致しないものを一覧表示できます。 GNUのgrepの使用:

    grep -vEn '^[^,]{9},' file 
    

    これは、カンマが続く正確9非カンマで起動しません(行番号で始まる)すべての行を示しています。例:

    $ cat file 
    1234567890,foo 
    123456789,bar 
    12345678,baz 
    
    $ grep -vEn '^[^,]{9},' file 
    1:1234567890,foo 
    3:12345678,baz 
    
    +0

    2番目の列<= 9999もない行を表示するには:grep -vEn '^ [^、] {9}、\ d {1,4} $' file' – bishop

    +0

    空白を許可するには: 'grep -vEn '^ \ s * [^、] {9} \ s *、\ s * [0-9] {1,4} \ s * $' file' – bishop

    関連する問題