5

while read p; do
echo $p
done < file.txt

此代码可以读取 file.txt 中的所有行,除了最后一行,任何想法都可以。谢谢

4

3 回答 3

8

如果您对文件中的最后一个有疑问\n,可以尝试:

while read p; do
echo $p
done < <(grep '' file.txt)

grep 对行尾并不挑剔;)

你可以grep . file.txt用来跳过空行...

于 2013-05-18T18:50:10.570 回答
7

正如其他答案所指出的那样,最后一行不包含换行符。但是读取命令实际上设置了p变量,然后不是返回成功,而是返回文件结束错误。所以这个错误会阻止循环被执行。您仍然可以使用p包含文件最后一行的变量

while read -r p || [[ -n "$p" ]]
do
echo $p
done < file.txt

这需要测试两个条件,或者,只有第一个失败时,第二个才会被执行。因此,当最后一行将导致文件结束错误时read,我们将检查是否p设置了。如果是,我们将使用它。

于 2013-05-18T19:04:59.343 回答
3

cat file.txt 并查看最后一行是否在最后一行末尾有新行。如果没有,则while read p ; do echo $p done < file.txt不会回显最后一行在文本文件的最后一行末尾添加一个换行符

于 2013-05-18T18:31:25.363 回答