当前位置:  技术问答>linux和unix

如何在shell中按2个字符来截取文本文件中的中文字符

    来源: 互联网  发布时间:2016-12-13

    本文导语:  先说下业务需求吧: 有一个日志文件,相当于是记事本格式的,每行是一条记录。 每行记录的长度是固定长度的,其中汉字是占位2个字符的,每行记录固定第几位到第几位是某种意义的。 现在的需求是将每行的记...

先说下业务需求吧:
有一个日志文件,相当于是记事本格式的,每行是一条记录。
每行记录的长度是固定长度的,其中汉字是占位2个字符的,每行记录固定第几位到第几位是某种意义的。
现在的需求是将每行的记录截取出来,并导入数据库中。

服务器环境是linux,数据库是oracle,我准备用按行读文件的方式,将每行的字符串读取出来,然后分解字符串,然后组合成sql语句,并输出生一个sql脚本。

然后调用oracle的sqlplus,运行sql脚本,并提交数据。

日志中的一行数据如下:
105454 查询账户  ************9424       63.80 008493 ******11 00:交易成功

其中“105454”是一个字段,“查询账户”是一个字段。
“105454”是从第0位到第5位,共6个字符,“查询账户”是从第7位到第14位,共8个字符,或4个汉字。
请问如何截取?
另:有可能有的行数据,第二个字段不是汉字,是字母的,但是同样最多占位8个字符。
我目前使用的截取字符串的方式中,汉字被当成一个字符处理,所以无法使用。
我目前使用的脚本如下:

#!/bin/bash
 
#引入环境变量
. $HOME/.bash_profile
 
#设定sql脚本文件路径及文件名
SQLSCRIPT="$HOME/sqlfile.sql"

#删除同名文件
rm -rf $SQLSCRIPT

#读取日志文件
MY_FILE="/home/log/20110710log"

#判断文件是否存在
if [ -e $MY_FILE ]
then
MY_LINE_NO=1
 
while read MY_LINE
do
log[0]=${MY_LINE:0:6}
log[1]=${MY_LINE:7:8}
log[2]=${MY_LINE:18:18}
log[3]=${MY_LINE:34:11}
log[4]=${MY_LINE:46:6}
log[5]=${MY_LINE:53:8}
log[6]=${MY_LINE:62}
echo "insert into loguser.monlog0(logdate,logtime,txnname,txnpan,txnamt,txnnum,txntel,txnres) values('$LD','${log[0]}','${log[1]}','${log[2]}',${log[3]},'${log[4]}','${log[5]}','${log[6]}');">>$SQLSCRIPT 
MY_LINE_NO=$((MY_LINE_NO+1))
done 

    
 
 

您可能感兴趣的文章:

  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 使用shell在文本文件中进行字符串搜索问题?shell高手请进,分不够可以再加
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • shell程序:在大文件中查找特定字符串,但该字符串可以跨行
  • 如何用shell实现将指定文件中的指定的字符串替换为我指定的另外的字符串
  • shell如何取一个字符串中最右边的三个字符?
  • shell如何去掉字符串中的一些字符?
  • shell如何只替换字符串的第一个字符?
  • shell怎么搜索文件中指定字符串,然后将该字符串后面的数字输出
  • 急问bash shell中替换字符串中某字符为通配符的问题。
  • 问一个简单的shell问题:如何将一个文件中的字符串A全部用另外一个字符串B替换?
  • 在linux下写一个shell:if(字符串1==“”(空) 或字符串2====“”(空))怎马写啊,急
  • shell 中如何传字符串参数?
  • shell里按照位置截取字符串变量
  • shell函数如何返回字符串
  • 谁知道Kernel driver怎么发送字符到shell运行吗?
  • linux shell 中# 字符当成注释?
  • 请问在shell如何实现字符串子串运算
  • shell脚本里面,用什么指令删除字符串中子串
  • 关于使用shell在文件中查找一段字符串的问题
  • 请教一个shell中字符和数值的问题。
  • 急急急!!!!!!用B shell如何实现截取变量的子串?
  • shell脚本 截取字符串的问题
  • shell截取问题
  • 怎么截取 特定行以后的所有行? shell
  • shell中文件截取行
  • shell脚本如何截取字符串?
  • Shell 截取一段字符问题
  • Shell字符串截取的详细方法
  • shell 编程:根据字符串截取文件
  • 大虾们救急!!关于shell字符串截取的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在shell下如何支持中文?输入中文?
  • 问题3:如何解决linux hat 9.0 shell下中文乱码问题?如何输入中文?
  • 在Windows下通过Telnet登陆到FedoraCore3时发现中文都是乱码,而Linux下Shell里的中文可以正常显示
  • 如何让shell脚本支持中文?
  • 我的shell不支持中文注释,请高手帮忙
  • 在shell下中文总是乱码,怎么办“
  • shell中如何显示中文字体?为啥进不去x-window里国呢?
  • 解决php接收shell返回的结果中文乱码问题
  • 我在Ctrl+Alt+F1进入shell屏幕,输入vi,出来的界面不能显示中文,而在x-window的终端下输入vi后可以看到中
  • shell中如何得到中文的拼音?
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • shell变量和子shell的问题请教
  • 请问“当前shell”和“子shell”的区别?
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?
  • 怎么写shell代码 写好shell怎么运行?
  • 请问一个shell中如何获取这个shell自身抛出的错误?
  • 非登录shell是什么 意思,和登录shell有什么区别啊
  • Solaris 8中修改root的shell为一个非法的Shell后怎么办?
  • 各位Shell高人,如何取得Shell的第10个入口参数?$10不行啊,急!
  • shell 编程 执行shell新建多个终端 并执行程序
  • 如何在一台机器上的shell中执行另外一台机器上的shell
  • 在shell中的交互问题,现在需要在shell结束时按某键或任意键
  • 请问什么是shell编程?一般都用shell编程实现什么?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3