Našel jsem řešení zde.
#!/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
DŮLEŽITÉ:Ujistěte se, že máte právo skript spustit a přečíst!chmod 555 script
POUŽITÍ:
./script text_with_newline OUTPUT: Newline at end of file!
./script text_without_newline OUTPUT: No Newline at end of file!
Stačí napsat:
cat -e nameofyourfile
Pokud je nový řádek, bude končit $
Pokud ne, bude končit %
symbol.
Odpověď Oliviera Pirsona je úhlednější než ta, kterou jsem zde původně zveřejnil (také správně zpracovává prázdné soubory). Upravil jsem své řešení tak, aby odpovídalo jeho.
V 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
}
Jako skript shellu, který můžete volat (vložte jej do souboru chmod +x <filename>
aby byl spustitelný):
#!/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-znak znamená absolutní konec řetězce.
if (preg_match('#\n\Z#', file_get_contents('foo.txt'))) {
echo 'New line found at the end';
}
Zde se tedy díváte na nový řádek na absolutním konci řetězce. file_get_contents
na závěr nic nepřidá. ALE načte celý soubor do paměti; pokud váš soubor není příliš velký, je to v pořádku, jinak budete muset přinést nové řešení vašeho problému.