我有很多文本文件,只有一列。
某些文本文件有 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) - 1
或cat 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