shell 文件处理
#!/bin/sh
while read line
do
if [ "$line" != "" ];then
ifileline=`echo $line|awk -F ':' '{print $1}'`
echo $ifileline
fi
done < $1
读取处理一个3M左右的文件非常的费时间,请问如何解析处理稍大文件的每一行?
------解决方案--------------------把你整个while循环改成这一句话:
awk -F':' '!/^$/{print $1}' $1
如果不判断空行的话,用这个也行:
cut -d':' -f1 file
------解决方案--------------------性能低的原因是,你在while循环里面不停的调用awk,文件有多少行,就好调用多少次,浪费了太多系统资源。
请给出部分原始文本,并说清楚你希望如何处理。
一般来说,一个awk命令就足够了。
------解决方案--------------------
[root@rhel6 tmp]# cat urfile
Pakage: name
version: 123
size: 456
Pakage: csdn1
version: 123
size: 456
Pakage: csdn2
version: 123
size: 456
[root@rhel6 tmp]#
awk -v RS= '/Pakage: name/' urfile
Pakage: name
version: 123
size: 456