
Ich möchte Zeilen in meinem Code finden, die eine bestimmte Länge überschreiten. Mein Code befindet sich in mehreren Dateien. Wie kann ich das am besten tun?
Ich würde gerne die Dateien und Zeilennummern kennen; Inhalt wäre wünschenswert, aber nicht notwendig. Der Zweck der Übung besteht dann darin, herauszufinden, wie die Zeilen umgebrochen werden können (wahrscheinlich manuell).
Antwort1
Mit grep
:
grep -En '.{12}' file
Für Zeilen mit mindestens 12 Zeichen Länge.
Mit mehreren Dateien:
find . -type f -exec grep -En '.{12}' {} +
Einige grep
Implementierungen, wie beispielsweise GNU grep
, können die Dateisuche selbst durchführen.
grep -rEn '.{12}' .
Aber hüten Sie sich vor symbolischen Links und anderen nicht regulären Dateien.
Antwort2
AWK-Lösung
awk '{
if (length($0) > 5)
print $0;'} yourfile
Oder, kürzer gesagt:
awk 'length > 5' file
Antwort3
Bash-Lösung
#!/bin/bash
count=0
while read; do
((++count))
len=${#REPLY}
if ((len > 80)); then
echo "Line $count is $len characters."
fi
done
Also beispielsweise ./whatever.sh < input.file
. Dabei wird die neue Zeile nicht miteinbezogen, indem 1 von abgezogen wird. $len
Wenn dies nicht erwünscht ist oder Ihre Eingabe CRLF-Endungen verwendet, sollten Sie es entsprechend anpassen.
Antwort4
Mit perl
(zum Beispiel), vorausgesetzt, Sie suchen nach Zeilen, die länger als 80 Zeichen sind:
So zeigen Sie die Zeilen an:
$ perl -nle 'print if length > 80' your_file
So zeigen Sie die Zeilennummer an:
$ perl -nle 'print "$.\n" if length > 80' your_file
Oder beides:
$ perl -nle 'print "[$.]: $_\n" if length > 80' your_file