0%

Shell逐行遍历文件


作者: 耗子007


while read

read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中.

利用read读取文件时,每次调用read命令都会读取文件中的”一行”文本.

当文件没有可读的行时,read命令将以非零状态退出.

1
2
3
4
5
6
7
8
9
cat filename| while read line
do
echo${line}
done

while read line
do
echo${line}
done < filename

for var in file

for var in file 表示变量var在file中循环取值.取值的分隔符由$IFS确定.

1
2
3
4
5
6
7
8
9
for line in $(cat filename)
do
echo “File:${line}”
done

for line in `cat filename`
do
echo “${line}”
done

如果输入文本每行中没有空格,则line在输入文本中按换行符分隔符循环取值.

如果输入文本中包括空格或制表符,则不是换行读取,line在输入文本中按空格分隔符或制表符或换行符特环取值.

可以通过把IFS设置为换行符来达到逐行读取的功能.

IFS的默认值为:空白(包括:空格,制表符,换行符).

注意:如何设置IFS为换行符

1
2
OLD_IFS=”$IFS”
IFS=$’\x0A’

awk工具变量

1
awk -f my.awk filename