LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2365|回复: 6

如何一行一行读取文件

[复制链接]
发表于 2008-2-7 16:47:10 | 显示全部楼层 |阅读模式
请问如何将一个文本文件一行一行的读取, 并将每行的内容打印出来?
发表于 2008-2-7 19:42:05 | 显示全部楼层
while read -r kk; do
   echo $kk
done
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-7 20:27:43 | 显示全部楼层
过年好,

(1)  read -r 中的 -r 是什么意思啊?


(2)

## demo.sh ##
while read -r kk
do
    echo $kk
done

那么 ./demo.sh < foo.txt  确实可以,  但如果象下面这样写, 就永远只是输出第一行,

## demo.sh ##
while read -r kk < foo.txt
do
    echo $kk
done

请问这两种情况为什么输出不一样。
回复 支持 反对

使用道具 举报

发表于 2008-2-7 20:32:48 | 显示全部楼层
这样
while read -r kk; do
echo $kk
done < foo.txt

至于-r,你自己看 man read 吧。
回复 支持 反对

使用道具 举报

发表于 2008-2-9 21:31:33 | 显示全部楼层
想到一个小脚本,不过比较笨重:
#!/bin/bash
aa=$(wc -l $1|awk '{print $1}')
for ((i=1;i<=$aa;i++));do
cat $1|head -n $i|tail -n 1
read
done

把这段存成一个可执行文件如test.比如你想一行行的看file.txt。你就可以./test file.txt
回复 支持 反对

使用道具 举报

发表于 2008-2-17 14:15:03 | 显示全部楼层
Do not treat a backslash character in any special way.  Consider each backslash to be part of the input line.
根据我的判断-r是读一行,包括回车符的意思,我还是觉得4楼的方法好些,呵呵
回复 支持 反对

使用道具 举报

发表于 2008-2-19 13:56:02 | 显示全部楼层
sed -n "np" filename
n是行号
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表