Ho trovato la soluzione qui.
#!/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
IMPORTANTE:assicurati di avere il diritto di eseguire e leggere lo script!chmod 555 script
UTILIZZO:
./script text_with_newline OUTPUT: Newline at end of file!
./script text_without_newline OUTPUT: No Newline at end of file!
Basta digitare:
cat -e nameofyourfile
Se c'è una nuova riga, terminerà con $
symbol.In caso contrario, terminerà con un %
simbolo.
La risposta di Olivier Pirson è più ordinata di quella che ho pubblicato qui originariamente (gestisce correttamente anche i file vuoti). Ho modificato la mia soluzione in modo che corrisponda alla sua.
In bash:
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
}
Come uno script di shell che puoi chiamare (incollalo in un file, chmod +x <filename>
per renderlo eseguibile):
#!/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
Il \Z
meta-carattere indica la fine assoluta della stringa.
if (preg_match('#\n\Z#', file_get_contents('foo.txt'))) {
echo 'New line found at the end';
}
Quindi qui stai guardando una nuova riga alla fine assoluta della stringa. file_get_contents
non aggiungerà nulla alla fine. MA caricherà l'intero file in memoria; se il tuo file non è troppo grande, va bene, altrimenti dovrai portare una nuova soluzione al tuo problema.