如何识别文件中超过一定长度的行

如何识别文件中超过一定长度的行

我想在我的代码中找到超过一定长度的行。我的代码位于多个文件中。有什么好的方法可以做到这一点?

我想知道文件和行号;内容将是首选,但不是必需的。练习的目的是弄清楚如何打破线条(可能是手动)。

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

相关内容