求得到文本里的字段信息的思路。头都搞大了。
时间:2011-10-06
来源:互联网
我在ROS里用 linux 下的 script 进行操作。
一个文本文件,内容如下:
到期日期姓名 地址 电话 带宽 账号 密码
======== ====== ========= =========== ========= =========== ===========
20111010 王大夫 1单元402 13999393998 4M 15809918400 1234567890
20120601 刘伟 2单元401 6922171 4M 15809918816 09876655
22 刘3 1单元202 tel 1M 1 1
33 33 33 33 1M 33 33
这个文本中间的空格 全部是用 TAB 或 空格产生的
而且最后一行后面 有可能 还有很多 的 回车换行符,在Emeditor 里显示如下:

我想得到 这四行 的 每个字段的内容 (不包括空格 和 TAB 产生的间隔), 而且 因回车换行符产生的 行也不采集。
给个思路吧。
谢谢。
作者: ww111222 发布时间: 2011-10-06
这个主要是shell中的文本解析,大致思路:
用while循环读取文件,遇到空行(单独回车或是只有空白字符,这需要一个
简单的正则表达式进行匹配)就continue再读取一行;遇到“标题栏及=====”等这些行也
continue,再读取一行。对于记录行,然后就是打印各个字段,可以用cut分割(这里它
需要压缩多个空格或制表符为一个)、当然也可以以使用awk。
写了个,参考下:
Python code
Output:
第1条记录如下:
20111010 王大夫 1单元402 13999393998 4M 15809918400 1234567890
第2条记录如下:
20120601 刘伟 2单元401 6922171 4M 15809918816 09876655
第3条记录如下:
22 刘3 1单元202 tel 1M 1 1
第4条记录如下:
33 33 33 33 1M 33 33
用while循环读取文件,遇到空行(单独回车或是只有空白字符,这需要一个
简单的正则表达式进行匹配)就continue再读取一行;遇到“标题栏及=====”等这些行也
continue,再读取一行。对于记录行,然后就是打印各个字段,可以用cut分割(这里它
需要压缩多个空格或制表符为一个)、当然也可以以使用awk。
写了个,参考下:
Python code
#!/bin/bash # parse.sh # Usage: parse.sh <input-file> EXIT_SUCCESS=0 EXIT_FAILURE=1 E_BADARG=2 if [ $# -ne 1 ]; then echo "Usage: parse.sh <input-file>" >&2 exit $E_BADARG fi file2read="$1" deadline= name= address= tel= broadband= account= passwd= counter=1 declare -a line_item while read line do if `echo "$line" | grep -q -E '^\\s*$'`; then continue elif `echo "$line" | grep -q -E '^\\s*到期日期\\s*姓名\\s*地址\\s*电话\\s*带宽\\s*账号\\s*密码\\s*$'`; then continue elif `echo "$line" | grep -q -E '^\\s*=+\\s*=+.*$'`; then continue else deadline=`echo "$line" | awk '{print $1}'` name=`echo "$line" | awk '{print $2}'` address=`echo "$line" | awk '{print $3}'` tel=`echo "$line" | awk '{print $4}'` broadband=`echo "$line" | awk '{print $5}'` account=`echo "$line" | awk '{print $6}'` passwd=`echo "$line" | awk '{print $7}'` echo "第$counter条记录如下:" echo -e "$deadline $name $address $tel $broadband $account $passwd\n" ((++counter)) fi done < "$file2read" exit $EXIT_SUCCESS
Output:
第1条记录如下:
20111010 王大夫 1单元402 13999393998 4M 15809918400 1234567890
第2条记录如下:
20120601 刘伟 2单元401 6922171 4M 15809918816 09876655
第3条记录如下:
22 刘3 1单元202 tel 1M 1 1
第4条记录如下:
33 33 33 33 1M 33 33
作者: dengxiayehu 发布时间: 2011-10-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28