ファイルの全行をすべて印刷

ファイルの全行をすべて印刷

ファイルの全行をすべて印刷するには? 「完了」とは改行文字で終わることを意味します。grepEOF を行区切り文字として扱うと、grep '^.*$' fileファイルの末尾に改行文字がなくても最後の行が印刷されます。

全体的な問題は、ログファイルを解析するために発生します。どういうわけか最後の項目が完全に記録されていることを確認する必要があります。つまり、新しい行で終わります。

答え1

簡単な方法は以下を使用することですperl

perl -ne '/\n/ && print' file

ファイルの最後の文字が改行文字であることを確認するには、次のようにします。

tail -c1 file | grep -q '^$' && echo yes || echo no

ただし、その-cオプションはPOSIXではないため、移植性はありません。

答え2

read(少なくともBourneシェルでは)改行で終わらなければなりません:

# /bin/sh -c 'echo -e "foo\nbar\c" | while read line; do echo $line; done'
foo
#

したがって、次のようなものを使用できます。

#!/bin/sh
while read line
    do echo $line
done < logfile.txt

関連情報