Wie kann ich Zeilen in Dateien über einer bestimmten Länge identifizieren?

Wie kann ich Zeilen in Dateien über einer bestimmten Länge identifizieren?

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 grepImplementierungen, 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. $lenWenn 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

verwandte Informationen