免费注册 查看新帖 |

Chinaunix

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

[文本处理] rhel4u4和rhel5u4 shell不同?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-02 14:12 |只看该作者 |倒序浏览
最近遇到一个奇怪的问题:发现在rhel4u4下同样的sh,在rhel5u4下执行得到不同的结果,难道是两者shell语言不兼容?如果是这样的话?会不会是rhel的bug?

sqkh.unl.tmp的文件内容如下:

Name                                      Null?    Type|
----------------------------------------- -------- ----------------------------|
JGH                                                VARCHAR2(4)|
JGMC                                               VARCHAR2(30)|
KHMC                                               VARCHAR2(60)|
KHZH                                               VARCHAR2(23)|
QSRQ                                               VARCHAR2(8)|
ZZRQ                                               VARCHAR2(8)|
KHBZ                                               VARCHAR2(1)|


ctl.sh的文件内容:
#!/bin/ksh

{
    omod=APPEND
    table=sqkh
    keyword=|
    echo "LOAD DATA"
    echo "$omod"
    echo "INTO TABLE $table"
    echo "FIELDS TERMINATED BY '$keyword'"
    echo "("

        sed -n '3,$p' sqkh.unl.tmp |
        grep -v "^$" |
        while read a b
        do
                if [ -n "$a" ]; then
                        echo "$a,"
                fi
        done |
        sed $'s/,$//'

    echo ")"
} > lwj.txt

在rhel4u4下得到lwj.txt 文件内容(这是想要的内容):

LOAD DATA
APPEND
INTO TABLE sqkh
FIELDS TERMINATED BY ''
(
JGH,
JGMC,
KHMC,
KHZH,
QSRQ,
ZZRQ,
KHBZ
)

而在rhel5u4下得到的lwj.txt 文件内容(错误的内容):


LOAD DATA
APPEND
INTO TABLE sqkh
FIELDS TERMINATED BY ''
(
JGH
JGMC
KHMC
KHZH
QSRQ
ZZRQ
KHBZ
)

在rhel下无论如何也得不到想要的结果,rhel6.0下是和rhel5u4下得到的是一样的结果!现请高手帮忙看一下,到底是什么原因?

论坛徽章:
0
2 [报告]
发表于 2012-08-02 14:19 |只看该作者
本帖最后由 personball 于 2012-08-02 14:22 编辑

回复 1# qcgxlg


    查明各系统所安装的ksh的版本是否一致

仔细看了下,貌似差别只是逗号?

论坛徽章:
0
3 [报告]
发表于 2012-08-02 14:23 |只看该作者
同样,在rhel4u4下执行:
[host@linux tmp]$ sh ctl.sh
[host@linux tmp]$ cat lwj.txt

LOAD DATA
APPEND
INTO TABLE sqkh
FIELDS TERMINATED BY ''
(
JGH
JGMC
KHMC
KHZH
QSRQ
ZZRQ
KHBZ
)

[host@linux tmp]$ ksh ctl.sh
[host@linux tmp]$ cat lwj.txt

LOAD DATA
APPEND
INTO TABLE sqkh
FIELDS TERMINATED BY ''
(
JGH,
JGMC,
KHMC,
KHZH,
QSRQ,
ZZRQ,
KHBZ
)



论坛徽章:
0
4 [报告]
发表于 2012-08-02 14:24 |只看该作者
对,就是“,”问题,最后一行的“,”不要,其他的“,”想要!

论坛徽章:
0
5 [报告]
发表于 2012-08-02 14:25 |只看该作者
回复 3# qcgxlg


    同样,在rhel4u4下执行:
[host@linux tmp]$ sh ctl.sh
[host@linux tmp]$ cat lwj.txt

你这里的sh命令,看一下具体是什么

ls -l /bin/sh

论坛徽章:
0
6 [报告]
发表于 2012-08-02 14:26 |只看该作者
[host@linux tmp]$ ls -l /bin/sh
lrwxrwxrwx  1 root root 4 2008-06-13  /bin/sh -> bash

论坛徽章:
0
7 [报告]
发表于 2012-08-02 14:27 |只看该作者
不同的shell,语法是有差异的,ksh我不太熟

论坛徽章:
0
8 [报告]
发表于 2012-08-02 14:27 |只看该作者
rhel5u4下:

[host@jsyh ctl]$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2009-12-28 /bin/sh -> bash

论坛徽章:
0
9 [报告]
发表于 2012-08-02 14:28 |只看该作者
rhel4u4下:

[host@linux tmp]$ ls -l /bin/sh
lrwxrwxrwx  1 root root 4 2008-06-13  /bin/sh -> bash

论坛徽章:
0
10 [报告]
发表于 2012-08-02 14:30 |只看该作者
在rhel 5u4下:

[host@jsyh ctl ]$ sh ctl.sh
[host@jsyh ctl]$ cat lwj.txt

LOAD DATA
APPEND
INTO TABLE sqkh
FIELDS TERMINATED BY ''
(
JGH
JGMC
KHMC
KHZH
QSRQ
ZZRQ
KHBZ
)

[host@jsyh ctl ]$ ksh ctl.sh
[host@jsyh ctl ]$ cat lwj.txt

LOAD DATA
APPEND
INTO TABLE sqkh
FIELDS TERMINATED BY ''
(
JGH
JGMC
KHMC
KHZH
QSRQ
ZZRQ
KHBZ
)

怎么也得不到正确的结果!

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP