私のコードで特定の長さよりも長い行を探したいです。私のコードは複数のファイルにあります。これを行うための良い方法はありますか?
ファイルと行番号を知りたいです。内容が優先されますが、必須ではありません。この練習の目的は、線を切る方法(おそらく手動で)を見つけることです。
答え1
そしてgrep
:
grep -En '.{12}' file
長さが12文字以上の行の場合。
複数のファイルがあります。
find . -type f -exec grep -En '.{12}' {} +
grep
GNUのようないくつかの実装では、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