txtファイルに文字が含まれている場合、bashの最後のx行を削除する

txtファイルに文字が含まれている場合、bashの最後のx行を削除する

フォルダに.txtファイルのリストがあり、最後の50行(完全行)にアルファベット文字が含まれている場合は削除したいと思います。これまで私は以下を持っています:

for i in *.txt
do max_line=$(cat ${i%.txt}.txt | wc -l)
   let min_line=max_line-50
   #
   sed -e "${min_line},${max_line}d" %{i%.txt}.txt
done
#

ベストアンサー1

努力する

tac file | awk '/[[:alpha:]]/ && ++CNT <= 50 {next} 1' | tac

または

tac file | awk '/[[:alpha:]]/ && NR <= 50 {next} 1' | tac

まず、最後の数行に文字が含まれていることを確認し、そうであれば50を数えてKick out ==>正確に50行を追い出します。 2番目は50行を調べ、文字が含まれている場合は追い出します。 ==> 50行以下の行を追い出します。

おすすめ記事