ここで解決策を見つけました。
#!/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
重要:スクリプトを実行して読む権利があることを確認してください!chmod 555 script
使用法:
./script text_with_newline OUTPUT: Newline at end of file!
./script text_without_newline OUTPUT: No Newline at end of file!
次のように入力してください:
cat -e nameofyourfile
改行がある場合は $
で終わります そうでない場合は、%
で終わります。
Olivier Pirson の回答は、私が最初にここに投稿したものよりも優れています (空のファイルも正しく処理されます)。彼と一致するように私のソリューションを編集しました。
バッシュの場合:
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
}
呼び出すことができるシェル スクリプトとして (ファイル chmod +x <filename>
に貼り付けます) 実行可能にします):
#!/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
メタ文字は、文字列の絶対終了を意味します。
if (preg_match('#\n\Z#', file_get_contents('foo.txt'))) {
echo 'New line found at the end';
}
したがって、ここでは、文字列の絶対末尾にある新しい行を見ています。 file_get_contents
最後に何も追加しません。ただし、ファイル全体をメモリにロードします。ファイルが大きすぎない場合は問題ありません。そうでない場合は、問題に新しい解決策をもたらす必要があります。
単一の Tomcat サーバーに複数の Spring Boot アプリケーションをデプロイすると、例外が表示されます。これを解決するには?
Linux マシンで root ユーザーとして Elasticsearch 2.1.1 を実行する方法