【Shell脚本】逐行处理文本文件
- font size decrease font size increase font size
- Print Email
经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下:
1.通过read命令完成.
read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中.
利用read读取文件时,每次调用read命令都会读取文件中的"一行"文本.
当文件没有可读的行时,read命令将以非零状态退出.
1 cat data.dat | while read line 2 do 3 echo "File:${line}" 4 done 5 6 while read line 7 do 8 echo "File:${line}" 9 done < data.dat
2.使用awk命令完成
awk是一种优良的文本处理工具,提供了极其强大的功能.
利用awk读取文件中的每行数据,并且可以对每行数据做一些处理,还可以单独处理每行数据里的每列数据.
1 cat data.dat | awk '{print $0}' 2 cat data.dat | awk 'for(i=2;i<NF;i++) {printf $i} printf "\n"}'
第1行代码输出data.dat里的每行数据,第2代码输出每行中从第2列之后的数据.
如果是单纯的数据或文本文件的按行读取和显示的话,使用awk命令比较方便.
3.使用for var in file 命令完成
for var in file 表示变量var在file中循环取值.取值的分隔符由$IFS确定.
1 for line in $(cat data.dat) 2 do 3 echo "File:${line}" 4 done 5 6 for line in `cat data.dat` 7 do 8 echo "File:${line}" 9 done
如果输入文本每行中没有空格,则line在输入文本中按换行符分隔符循环取值.
如果输入文本中包括空格或制表符,则不是换行读取,line在输入文本中按空格分隔符或制表符或换行符特环取值.
可以通过把IFS设置为换行符来达到逐行读取的功能.
IFS的默认值为:空白(包括:空格,制表符,换行符).
( ! ) Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/com_k2/templates/default/item.php on line 169 | ||||
---|---|---|---|---|
Call Stack | ||||
# | Time | Memory | Function | Location |
1 | 0.0009 | 412008 | {main}( ) | .../index.php:0 |
2 | 0.0987 | 4267472 | Joomla\CMS\Application\SiteApplication->execute( ) | .../index.php:49 |
3 | 0.0987 | 4267472 | Joomla\CMS\Application\SiteApplication->doExecute( ) | .../CMSApplication.php:196 |
4 | 0.2989 | 11579248 | Joomla\CMS\Application\SiteApplication->dispatch( ) | .../SiteApplication.php:233 |
5 | 0.2996 | 11603888 | Joomla\CMS\Component\ComponentHelper::renderComponent( ) | .../SiteApplication.php:194 |
6 | 0.3003 | 11659216 | Joomla\CMS\Component\ComponentHelper::executeComponent( ) | .../ComponentHelper.php:377 |
7 | 0.3005 | 11686952 | require_once( '/var/www/vhosts/shan.info/httpdocs/components/com_k2/k2.php' ) | .../ComponentHelper.php:402 |
8 | 0.3082 | 12107304 | K2ControllerItem->execute( ) | .../k2.php:64 |
9 | 0.3082 | 12107304 | K2ControllerItem->display( ) | .../BaseController.php:710 |
10 | 0.3175 | 12799792 | K2ControllerItem->display( ) | .../item.php:78 |
11 | 0.3175 | 12799792 | K2ControllerItem->display( ) | .../controller.php:19 |
12 | 0.3217 | 13174528 | Joomla\CMS\Cache\Controller\ViewController->get( ) | .../BaseController.php:663 |
13 | 0.3234 | 13194896 | K2ViewItem->display( ) | .../ViewController.php:102 |
14 | 0.3823 | 16078616 | K2ViewItem->display( ) | .../view.html.php:742 |
15 | 0.3823 | 16078616 | K2ViewItem->loadTemplate( ) | .../HtmlView.php:230 |
16 | 0.3840 | 16254392 | include( '/var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/com_k2/templates/default/item.php' ) | .../HtmlView.php:701 |
- Published in CentOS 6
- Read 2816 times
( ! ) Notice: Only variables should be assigned by reference in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/com_k2/templates/default/item.php on line 478 | ||||
---|---|---|---|---|
Call Stack | ||||
# | Time | Memory | Function | Location |
1 | 0.0009 | 412008 | {main}( ) | .../index.php:0 |
2 | 0.0987 | 4267472 | Joomla\CMS\Application\SiteApplication->execute( ) | .../index.php:49 |
3 | 0.0987 | 4267472 | Joomla\CMS\Application\SiteApplication->doExecute( ) | .../CMSApplication.php:196 |
4 | 0.2989 | 11579248 | Joomla\CMS\Application\SiteApplication->dispatch( ) | .../SiteApplication.php:233 |
5 | 0.2996 | 11603888 | Joomla\CMS\Component\ComponentHelper::renderComponent( ) | .../SiteApplication.php:194 |
6 | 0.3003 | 11659216 | Joomla\CMS\Component\ComponentHelper::executeComponent( ) | .../ComponentHelper.php:377 |
7 | 0.3005 | 11686952 | require_once( '/var/www/vhosts/shan.info/httpdocs/components/com_k2/k2.php' ) | .../ComponentHelper.php:402 |
8 | 0.3082 | 12107304 | K2ControllerItem->execute( ) | .../k2.php:64 |
9 | 0.3082 | 12107304 | K2ControllerItem->display( ) | .../BaseController.php:710 |
10 | 0.3175 | 12799792 | K2ControllerItem->display( ) | .../item.php:78 |
11 | 0.3175 | 12799792 | K2ControllerItem->display( ) | .../controller.php:19 |
12 | 0.3217 | 13174528 | Joomla\CMS\Cache\Controller\ViewController->get( ) | .../BaseController.php:663 |
13 | 0.3234 | 13194896 | K2ViewItem->display( ) | .../ViewController.php:102 |
14 | 0.3823 | 16078616 | K2ViewItem->display( ) | .../view.html.php:742 |
15 | 0.3823 | 16078616 | K2ViewItem->loadTemplate( ) | .../HtmlView.php:230 |
16 | 0.3840 | 16254392 | include( '/var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/com_k2/templates/default/item.php' ) | .../HtmlView.php:701 |