特定の長さを超えるファイルの行を識別する方法

特定の長さを超えるファイルの行を識別する方法

私のコードで特定の長さよりも長い行を探したいです。私のコードは複数のファイルにあります。これを行うための良い方法はありますか?

ファイルと行番号を知りたいです。内容が優先されますが、必須ではありません。この練習の目的は、線を切る方法(おそらく手動で)を見つけることです。

答え1

そしてgrep

grep -En '.{12}' file

長さが12文字以上の行の場合。

複数のファイルがあります。

find . -type f -exec grep -En '.{12}' {} +

grepGNUのようないくつかの実装では、grepファイル自体を見つけることができます。

grep -rEn '.{12}' .

ただし、シンボリックリンクやその他の珍しいファイルには注意してください。

答え2

AWKソリューション

awk '{       
if (length($0) > 5)
        print $0;'} yourfile

またはもっと簡潔に言えば:

awk 'length > 5' file

答え3

カンクンソリューション

#!/bin/bash

count=0

while read; do
    ((++count)) 
    len=${#REPLY}
    if ((len > 80)); then
        echo "Line $count is $len characters."
    fi
done

例えば;から1を引く改行文字./whatever.sh < input.fileは含まれません$len。これが望ましくない場合、または入力がCRLFで終わる場合は、それに応じて調整する必要があります。

答え4

perlたとえば)80文字より長い行を検索するとします。

行を表示するには、次の手順を実行します。

$ perl -nle 'print if length > 80' your_file

行数を表示:

$ perl -nle 'print "$.\n" if length > 80' your_file

または両方:

$ perl -nle 'print "[$.]:  $_\n" if length > 80' your_file

関連情報