次のデータを含むファイルがあります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