ファイルを繰り返すときに最後の行にあるかどうかはどうすればわかりますか?

ファイルを繰り返すときに最後の行にあるかどうかはどうすればわかりますか?

次のデータを含むファイルがありますlisting.txt

1
2
3
4
5

次に、次のコマンドを使用してファイルを繰り返し、各行で操作を実行します。

IFS=$'\n'
while IFS= read -r inc; do
    if [ $inc -eq 1 ]
    then
        echo "FIRST: $inc"
    else
        echo "MID: $inc"
    fi
done </home/user/listing.txt

しかし、最後の行であることを確認するオプションが見つかりません。私が最後の行にある場合、それを見つけるための最良の方法は何ですか?

私はループについて話している多くのページと、ファイルから最後の行を取得することについて話しているページを見ましたが、私のループがそれが最後の行にあることを知るのに役立つことはありません。

ベストアンサー1

総行数とも呼ばれるファイルの最後の行番号を取得します。現在の行番号を追跡しながらファイルを繰り返します。現在の行番号が最後の行番号と同じ場合は、対処してください。

#!/bin/bash

file="some-file.txt"
last_line=$(wc -l < $file)
current_line=0

while read -r line; do
  current_line=$(($current_line + 1))

  if [[ $current_line -ne $last_line ]]; then 
    # is NOT last line
  else
    # IS last line
  fi 
done < $file 

おすすめ記事