Saya menemukan solusinya di sini.
#!/bin/bash
x=`tail -n 1 "$1"`
if [ "$x" == "" ]; then
echo "Newline at end of file!"
else
echo "No Newline at end of file!"
fi
PENTING:Pastikan Anda memiliki hak untuk mengeksekusi dan membaca skrip!chmod 555 script
PENGGUNAAN:
./script text_with_newline OUTPUT: Newline at end of file!
./script text_without_newline OUTPUT: No Newline at end of file!
Cukup ketik:
cat -e nameofyourfile
Jika ada baris baru maka akan diakhiri dengan $
simbol.Jika tidak, maka akan diakhiri dengan %
simbol.
Jawaban Olivier Pirson lebih rapi daripada yang saya posting di sini awalnya (ini juga menangani file kosong dengan benar). Saya mengedit solusi saya untuk mencocokkannya.
Di pesta:
newline_at_eof()
{
if [[ -s "$1" && -z "$(tail -c 1 "$1")" ]]
then
echo "Newline at end of file!"
else
echo "No newline at end of file!"
fi
}
Sebagai skrip shell yang dapat Anda panggil (tempelkan ke file, chmod +x <filename>
untuk membuatnya dapat dieksekusi):
#!/bin/bash
if [[ -s "$1" && -z "$(tail -c 1 "$1")" ]]
then
echo "Newline at end of file!"
else
echo "No newline at end of file!"
fi
\Z
meta-karakter berarti akhir absolut dari string.
if (preg_match('#\n\Z#', file_get_contents('foo.txt'))) {
echo 'New line found at the end';
}
Jadi di sini Anda melihat baris baru di ujung mutlak string. file_get_contents
tidak akan menambahkan apa pun di akhir. TETAPI itu akan memuat seluruh file ke dalam memori; jika file Anda tidak terlalu besar, tidak apa-apa, jika tidak, Anda harus membawa solusi baru untuk masalah Anda.