查找少于 2000 行的文本文件并将其删除



我有很多文本文件,只有一列。

某些文本文件有 2000 行(由数字组成

),而其他一些文本文件少于 2000 行(也仅由数字组成)。

我想删除所有少于 2000 行的纺织品。

额外信息

少于 2000 行的文件不为空,它们都有换行符,直到第 2000 行。另外,我的文件有一些复杂的名称,例如:Nameofpop_chr1_window1.txt

我尝试使用 awk 首先计算文本文件的行数,但由于每个文件都有换行符,我得到的结果相同,每个文件 2000 行。

awk 'END { print NR }' Nameofpop_chr1_window1.txt

提前谢谢。

您可以使用此 awk 来计算非空行:

awk 'NF{i++} END { print i }' Nameofpop_chr1_window1.txt

或者这个awk只计算那些只有数字的行

awk '/^[[:digit:]]+$/ {i++} END { print i }' Nameofpop_chr1_window1.txt

删除所有少于 2000 行的带数字的文件,请使用以下 awk:

for f in f*; do
    [[ -n $(awk '/^[[:digit:]]+$/{i++} END {if (i<2000) print FILENAME}' "$f") ]] && rm "$f"
done
<</div> div class="one_answers">您可以使用

expr $(cat filename|sort|uniq|wc -l) - 1cat filename|grep -v '^$'|wc -l它会为您提供每个文件的行数,并在此基础上决定要做什么

你可以使用 Bash:

for f in $files; do
    n=0
    while read line; do
        [[ -n $line ]] && ((n++))
    done < $f
    [ $n -lt 2000 ] && rm $f
done

相关内容

  • 没有找到相关文章

最新更新