免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2013 | 回复: 2
打印 上一主题 下一主题

SHELL脚本读文件 . [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-18 16:47 |只看该作者 |倒序浏览
SHELL脚本读文件 .





先说一下,我用的是这个:



以下是sh文件内容

  1. ********************************************

  2. #!/bin/sh
  3. FILENAME="$1"

  4. cat $FILENAME | while read LINE
  5. do
  6.         echo "$LINE"

  7. done

  8. ********************************************



  9. 给你写了一个小例子,从一个文件读数据,设置环境变量:
  10. 数据文件data.txt包含三行:
  11. aaa
  12. bbb
  13. ccc


  14. ------   test.sh   ------
  15. while   read   data;   do
  16.         if   [   $data   =   "ccc "   ];   then
  17.             echo   "[$data] "
  18.             export   TTT= "$data "
  19.         fi
  20. done   <   data.txt
  21. ----------------------

  22. 运行方式:
  23. .   test.sh
  24. 前面加一个点表示在当前shell进程运行,这样可以修改当前环境变量


  25. *******************************************************************

  26. *******************************************************************

  27. *******************************************************************

  28. *******************************************************************


  29. shell读文件的十二种方法(收藏)Shell 2009-11-03 22:52:53 阅读503 评论1 字号:大中小
  30. #!/usr/bin/ksh

  31. #

  32. # SCRIPT: 12_ways_to_parse.ksh.ksh

  33. #

  34. #

  35. # REV: 1.2.A

  36. #

  37. # PURPOSE:  This script shows the different ways of reading

  38. #       a file line by line.  Again there is not just one way

  39. #       to read a file line by line and some are faster than

  40. #       others and some are more intuitive than others.

  41. #

  42. # REV LIST:

  43. #

  44. #       03/15/2002 - Randy Michael

  45. #       Set each of the while loops up as functions and the timing

  46. #       of each function to see which one is the fastest.

  47. #

  48. #######################################################################

  49. #

  50. #       NOTE: To output the timing to a file use the following syntax:

  51. #

  52. # 12_ways_to_parse.ksh file_to_process > output_file_name 2>&1

  53. #

  54. #       The actaul timing data is sent to standard error, file

  55. #       descriptor (2), and the function name header is sent

  56. #       to standard output, file descriptor (1).

  57. #

  58. #######################################################################

  59. #

  60. # set -n  # Uncomment to check command syntax without any execution

  61. # set -x  # Uncomment to debug this script

  62. #

  63. FILENAME="$1"

  64. TIMEFILE="/tmp/loopfile.out"

  65. >$TIMEFILE

  66. THIS_SCRIPT=$(basename $0)

  67. ######################################

  68. function usage

  69. {

  70. echo "/nUSAGE: $THIS_SCRIPT  file_to_process/n"

  71. echo "OR - To send the output to a file use: "

  72. echo "/n$THIS_SCRIPT  file_to_process  > output_file_name 2>&1 /n"

  73. exit 1

  74. }

  75. ######################################

  76. function while_read_LINE

  77. {

  78. cat $FILENAME | while read LINE

  79. do

  80.         echo "$LINE"

  81.         :

  82. done

  83. }

  84. ######################################

  85. function while_read_LINE_bottom

  86. {

  87. while read LINE

  88. do

  89.         echo "$LINE"

  90.         :

  91. done < $FILENAME

  92. }

  93. ######################################

  94. function while_line_LINE_bottom

  95. {

  96. while line LINE

  97. do

  98.         echo $LINE

  99.         :

  100. done < $FILENAME

  101. }

  102. ######################################

  103. function cat_while_LINE_line  

  104. {

  105. cat $FILENAME | while LINE=`line`

  106. do

  107.         echo "$LINE"

  108.         :

  109. done

  110. }

  111. ######################################

  112. function while_line_LINE

  113. {

  114. cat $FILENAME | while line LINE

  115. do

  116.         echo "$LINE"

  117.         :

  118. done

  119. }

  120. ######################################

  121. function while_LINE_line_bottom

  122. {

  123. while LINE=`line`

  124. do

  125.         echo "$LINE"

  126.         :

  127. done < $FILENAME

  128. }

  129. ######################################

  130. function while_LINE_line_cmdsub2

  131. {

  132. cat $FILENAME | while LINE=$(line)

  133. do

  134.         echo "$LINE"

  135.         :

  136. done

  137. }

  138. ######################################

  139. function while_LINE_line_bottom_cmdsub2

  140. {

  141. while LINE=$(line)

  142. do

  143.         echo "$LINE"

  144.         :

  145. done < $FILENAME

  146. }

  147. ######################################

  148. function while_read_LINE_FD

  149. {

  150. exec 3<&0

  151. exec 0< $FILENAME

  152. while read LINE

  153. do

  154.         echo "$LINE"

  155.         :

  156. done

  157. exec 0<&3

  158. }

  159. ######################################

  160. function while_LINE_line_FD

  161. {

  162. exec 3<&0

  163. exec 0< $FILENAME

  164. while LINE=`line`

  165. do

  166.         echo "$LINE"

  167.         :

  168. done

  169. exec 0<&3

  170. }

  171. ######################################

  172. function while_LINE_line_cmdsub2_FD

  173. {

  174. exec 3<&0

  175. exec 0< $FILENAME

  176. while LINE=$(line)

  177. do

  178.         print "$LINE"

  179.         :

  180. done

  181. exec 0<&3

  182. }

  183. ######################################

  184. function while_line_LINE_FD

  185. {

  186. exec 3<&0

  187. exec 0< $FILENAME

  188. while line LINE

  189. do

  190.         echo "$LINE"

  191.         :

  192. done

  193. exec 0<&3

  194. }

  195. ######################################

  196. ########### START OF MAIN ############

  197. ######################################

  198. # Test the Input

  199. # Looking for exactly one parameter

  200. (( $# == 1 )) || usage

  201. # Does the file exist as a regular file?

  202. [[ -f $1 ]] || usage

  203. echo "/nStarting File Processing of each Method/n"

  204. echo "Method 1:"

  205. echo "/nfunction while_read_LINE/n" >> $TIMEFILE

  206. echo "function while_read_LINE"

  207. time while_read_LINE >> $TIMEFILE

  208. echo "/nMethod 2:"

  209. echo "/nfunction while_read_LINE_bottom/n" >> $TIMEFILE

  210. echo "function while_read_LINE_bottom"

  211. time while_read_LINE_bottom >> $TIMEFILE

  212. echo "/nMethod 3:"

  213. echo "/nfunction while_line_LINE_bottom/n" >> $TIMEFILE

  214. echo "function while_line_LINE_bottom"

  215. time while_line_LINE_bottom >> $TIMEFILE

  216. echo "/nMethod 4:"

  217. echo "/nfunction cat_while_LINE_line/n" >> $TIMEFILE

  218. echo "function cat_while_LINE_line"

  219. time cat_while_LINE_line >> $TIMEFILE

  220. echo "/nMethod 5:"

  221. echo "/nfunction while_line_LINE/n" >> $TIMEFILE

  222. echo "function while_line_LINE"

  223. time while_line_LINE >> $TIMEFILE

  224. echo "/nMethod 6:"

  225. echo "/nfunction while_LINE_line_bottom/n" >> $TIMEFILE

  226. echo "function while_LINE_line_bottom"

  227. time while_LINE_line_bottom >> $TIMEFILE

  228. echo "/nMethod 7:"

  229. echo "/nfunction while_LINE_line_cmdsub2/n" >> $TIMEFILE

  230. echo "function while_LINE_line_cmdsub2"

  231. time while_LINE_line_cmdsub2 >> $TIMEFILE

  232. echo "/nMethod 8:"

  233. echo "/nfunction while_LINE_line_bottom_cmdsub2/n" >> $TIMEFILE

  234. echo "function while_LINE_line_bottom_cmdsub2"

  235. time while_LINE_line_bottom_cmdsub2 >> $TIMEFILE

  236. echo "/nMethod 9:"

  237. echo "/nfunction while_read_LINE_FD/n" >> $TIMEFILE

  238. echo "function while_read_LINE_FD"

  239. time while_read_LINE_FD >> $TIMEFILE

  240. echo "/nMethod 10:"

  241. echo "/nfunction while_LINE_line_FD/n" >> $TIMEFILE

  242. echo "function while_LINE_line_FD"

  243. time while_LINE_line_FD >> $TIMEFILE

  244. echo "/nMethod 11:"

  245. echo "/nfunction while_LINE_line_cmdsub2_FD/n" >> $TIMEFILE

  246. echo "function while_LINE_line_cmdsub2_FD"

  247. time while_LINE_line_cmdsub2_FD >> $TIMEFILE

  248. echo "/nMethod 12:"

  249. echo "/nfunction while_line_LINE_FD/n" >> $TIMEFILE

  250. echo "function while_line_LINE_FD"

  251. time while_line_LINE_FD >> $TIMEFILE
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2011-11-18 20:40 |只看该作者
少用 cat xxx | while

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
3 [报告]
发表于 2011-11-19 10:28 |只看该作者
http://bbs.chinaunix.net/thread-667979-1-1.html
你是把这个帖子重新发了一遍?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP