フォルダに.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行以下の行を追い出します。