GNU/Linux >> Linux の 問題 >  >> Linux

Linux - ファイルの末尾に空行があるかどうかを確認する

ここで解決策を見つけました。

#!/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 最後に何も追加しません。ただし、ファイル全体をメモリにロードします。ファイルが大きすぎない場合は問題ありません。そうでない場合は、問題に新しい解決策をもたらす必要があります。


Linux
  1. xclipを使用してLinuxコマンドラインでコピーして貼り付けます

  2. Linux でコマンドラインを使用して任意のファイルをダウンロードするための 4 つのツール

  3. Linux - 特定の行からファイルの最後までの grep

  1. statコマンドを使用してLinuxのファイルステータスを確認します

  2. Linuxでのテキストファイルの少ないビューアの高度な使用

  3. コマンドラインを使用してLinuxでtar.gzファイルを抽出する方法

  1. LinuxコマンドラインからのGoogleドライブの使用

  2. ファイルの最後に改行を追加するにはどうすればよいですか?

  3. Vimでファイルの最初または最後に移動する[クイックヒント]