Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2729|回复: 3

[Shell] Cshell 循环读取txt文件 [复制链接]

Rank: 8Rank: 8

发表于 2012-8-18 10:10:15 |显示全部楼层
读文件操作是编程语言和脚本的基本功能,Cshell作为古老的Unix脚本语言,可以用很多方式来实现读取文本。
这里介绍一种方法,介绍如何把txt文本每一行都读入Cshell变量进行处理的方法, 而且可以预先筛选不需要的行。

文本文件:sce.txt
  1. ###############################
  2. # Test PGM Conifg information #
  3. ###############################
  4. PROGRAM_DIR:/home/production/F_MAX232_100SITES_V1
  5. PROGRAM_NAME:FT_MAX232_100SITES_PARL_V1.load
  6. ###### Do not delete this line #
复制代码

脚本文件:loop.sh
  1. #!/bin/csh
  2. foreach record(` sed '/^#/d' sce.txt`)
  3.       echo $record
  4. end
  5. exit 0
复制代码

loop.sh运行结果:
PROGRAM_DIR:/home/production/F_MAX232_100SITES_V1
PROGRAM_NAME:FT_MAX232_100SITES_PARL_V1.load

这里是用foreach record和sed配合实现循环读取和筛选的功能

使用道具 举报

Rank: 8Rank: 8

发表于 2012-8-18 10:19:58 |显示全部楼层
这个foreach record 加 sed 循环有三个弊病,请大家使用的时候注意哦

1. sed 读取不到最后一样文本
2. 如果一行文本里面包含空格,它会以空格为分割把一行文本当作多个record
3. 似乎foreach record循环的速度非常慢,哪怕你的文本很少。

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|IC Test Forum Inc.

GMT+8, 2020-4-4 04:38 , Processed in 0.411761 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部