前言
在Linux shell编程中,我们经常需要以行为处理单位进行数据处理。
使用while read处理
read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中。read每次读取一行的数据然后就传递给变量进行处理。
1、利用管道输入到read中
a=0
cat /tmp/text.txt | while read line
do
echo $line
let a=a+1
done
echo $a
注意:这里可以看到a输出的还是0,因为给a加1的操作是在管道之后,变量a不会从管理里面返回,因此a最后输出还是0。这里在提取数据的时候要特别注意。
2、利用重定向输入到read中
a=0
while read line
do
echo $line
let a=a+1
done < /tmp/text.txt
echo $a
注意:这里的a输出的就是行数了,因为这里处理的时候没有经过管道,而是重定向到标准输入,给read处理,所以这里的变量a是可以被处理的。
使用awk进行处理
利用awk读取文件中的每行数据,并且可以对每行数据做一些处理,还可以单独处理每行数据里的每列数据。
cat /tmp/text.txt | awk '{print $0}' #$0可以输出整行的数据
总结
shell虽然方便,但是一旦出现bug,不好查找。