如何識別文件中超過一定長度的行

如何識別文件中超過一定長度的行

我想在我的程式碼中找到超過一定長度的行。我的程式碼位於多個文件中。有什麼好的方法可以做到這一點?

我想知道文件和行號;內容將是首選,但不是必需的。練習的目的是弄清楚如何打破線條(可能是手動)。

答案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

所以,例如,./whatever.sh < input.file.這不包括從$len;中減去 1 的換行符。如果這是不可取的,或者您的輸入使用 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

相關內容