免费注册 查看新帖 |

Chinaunix

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

请教大家一个sed的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-24 14:27 |只看该作者 |倒序浏览
请问下面一句话是什么意思
dbaccess database <<EOF 2>/dev/null | sed -e 's/\(.*\) \(.*\)/\2/g'
谢谢

论坛徽章:
0
2 [报告]
发表于 2006-05-24 14:31 |只看该作者
dbaccess database <<EOF 2>/dev/null | sed -e 's/\(.*\) \(.*\)/\2/g'

                                                                               ~~  用这部分替换整句

论坛徽章:
0
3 [报告]
发表于 2006-05-24 14:35 |只看该作者
[mhung@mybsd ~]$cat f.txt|sed -e 's/\(.*\) \(.*\)/\2/g'
bb
dd
[mhung@mybsd ~]$cat f.txt
aa bb
cc dd
[mhung@mybsd ~]$

论坛徽章:
0
4 [报告]
发表于 2006-05-24 14:46 |只看该作者
是将“\(.*\) \(.*\)”用“\2”替换是吗
这两个分别代表什么意思呢
前面的dbaccess database <<EOF又是指数据库的什么呢

论坛徽章:
0
5 [报告]
发表于 2006-05-24 14:49 |只看该作者
这是个取系统日期的函数
get_sys_date() {
DBDATE=Y4MD; export DBDATE
dbaccess database <<EOF 2>/dev/null | sed -e 's/\(.*\) \(.*\)/\2/g' | sed -e '
s/\///g'
    select date from sys_gov;
EOF
}

论坛徽章:
0
6 [报告]
发表于 2006-05-24 14:56 |只看该作者
原帖由 82387193 于 2006-5-24 14:46 发表
是将“\(.*\) \(.*\)”用“\2”替换是吗
这两个分别代表什么意思呢
前面的dbaccess database <<EOF又是指数据库的什么呢


“\(.*\) \(.*\)”是正则表达式


\(.*\)  代表空格前的所有字符
\(.*\)代表空格后的所有字符

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2006-05-24 15:04 |只看该作者
原帖由 82387193 于 2006-5-24 14:46 发表
是将“\(.*\) \(.*\)”用“\2”替换是吗
这两个分别代表什么意思呢
前面的dbaccess database <<EOF又是指数据库的什么呢

看来你很有必要祥读:
http://bbs.chinaunix.net/viewthr ... &extra=page%3D1

论坛徽章:
0
8 [报告]
发表于 2006-05-25 21:31 |只看该作者
谨遵教诲
但是我又遇到麻烦了
shell如下
DBDATE=Y4MD; export DBDATE

get_sys_date() {
    DBDATE=Y4MD; export DBDATE
    dbaccess mbps_rundb <<EOF 2>/dev/null | sed -e 's/\(.*\) \(.*\)/\2/g' | sed
-e 's/\///g'
    select clr_date from sys_gov;
EOF
}

CURRENT=`get_sys_date`
echo $CURRENT

dbaccess mbps_rundb <<!

!echo "将批量任务表置为已入帐..."
update mbp_bat_task set btt_status = 1 where 1=1;

!echo "置批量计划表的上次批扣日期以及状态..."
select bbp_biz_code from mbp_batch_plan where bbp_start_date = "$CURRENT";

!

执行结果是:
20060522

Database selected.

将批量任务表置为已入帐...

6 row(s) updated.

置批量计划表的上次批扣日期以及状态...

  282: Found a quote for which there is no matching quote.
Error in line 1
Near character position 64


Database closed.
????????????????

论坛徽章:
0
9 [报告]
发表于 2006-05-27 21:23 |只看该作者
试解释:
第一个sed是把以空格分隔成的两个字符串只留下第二部分
第二个sed是把/去掉

282那一行是说在命令的第64个字符附近的引用在查找的条件里找不到匹配的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP