ファイルの全行をすべて印刷するには? 「完了」とは改行文字で終わることを意味します。grep
EOF を行区切り文字として扱うと、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