免费注册 查看新帖 |

Chinaunix

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

[文本处理] SHELL程序中的sed参数如何处理$XXX的变量啊? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-05 10:35 |只看该作者 |倒序浏览
现有模板文件如下:
aaaaaaaaaa
bbbbbbbbb
ccXXXXXcc
ddddddddd
该文件叫inc1df.tmpl


在一个SHELL程序中,有如下的程序片段:
#!/bin/sh

WEEK_DAY=`date +%A`
sed -i 's/XXXXX/${WEEK_DAY}/g' inc1df.tmpl

这样做的结果就是,inc1df.tmpl中的XXXXX总是被替换成${WEEK_DAY},而不是$WEEK_DAY这个变量的结果
请问我该如何做,使得XXXXX被替换成Friday呢?

论坛徽章:
3
金牛座
日期:2013-08-26 10:25:02摩羯座
日期:2013-09-09 15:14:322015年亚洲杯之约旦
日期:2015-05-06 09:33:56
2 [报告]
发表于 2014-12-05 10:39 |只看该作者
本帖最后由 kooleon 于 2014-12-05 10:42 编辑

反单引号换成双引号。就行了
  1. admin@WIN-LK33EFD5DU9 ~
  2. $ WEEK_DAY=`date +%A`

  3. admin@WIN-LK33EFD5DU9 ~
  4. $ echo -e "XXXXXX\nOOOOOOOOO" |sed  "s/XXXXXX/${WEEK_DAY}/g"
  5. 星期五
  6. OOOOOOOOO
复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
3 [报告]
发表于 2014-12-05 10:40 |只看该作者
sed -i 's/XXXXX/${WEEK_DAY}/g' ==> sed -i "s/XXXXX/${WEEK_DAY}/g"

sed -i 's/XXXXX/${WEEK_DAY}/g' ==> sed -i 's/XXXXX/'${WEEK_DAY}'/g'

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
4 [报告]
发表于 2014-12-05 11:00 |只看该作者
原来是这样,学习了

论坛徽章:
11
CU十二周年纪念徽章
日期:2013-10-24 15:41:342015年辞旧岁徽章
日期:2015-03-03 16:54:15丑牛
日期:2015-01-14 10:36:40技术图书徽章
日期:2015-01-12 15:46:11白羊座
日期:2014-11-14 09:35:36狮子座
日期:2014-10-30 13:18:49巳蛇
日期:2014-10-11 12:52:08子鼠
日期:2014-09-28 14:11:06双鱼座
日期:2014-04-22 13:05:48午马
日期:2014-02-11 17:58:002015年迎新春徽章
日期:2015-03-04 09:55:28
5 [报告]
发表于 2014-12-05 11:39 |只看该作者
学习了。

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
6 [报告]
发表于 2014-12-05 11:56 |只看该作者
不管是双引号还是单引号  就是把引号内的所有输入当成一个整体的输入
当内部有变量需要解析时,使用双引号

论坛徽章:
18
处女座
日期:2014-11-13 15:52:322015亚冠之胡齐斯坦钢铁
日期:2015-08-14 16:09:082015亚冠之北京国安
日期:2015-06-02 18:41:152015亚冠之广州恒大
日期:2015-06-02 18:41:15NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯之中国
日期:2015-04-01 16:38:392015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之阿联酋
日期:2015-03-06 09:33:432015年辞旧岁徽章
日期:2015-03-04 13:32:472015年迎新春徽章
日期:2015-03-04 10:01:44拜羊年徽章
日期:2015-03-03 16:15:43洛杉矶快船
日期:2015-03-02 16:05:34
7 [报告]
发表于 2014-12-05 12:49 |只看该作者
,又学习一招,,一直以为shell中就必须用单引号。。原来双引号有这作用。

论坛徽章:
5
戌狗
日期:2014-06-09 10:29:10酉鸡
日期:2014-12-01 16:05:27处女座
日期:2015-01-07 18:35:262015亚冠之水原三星
日期:2015-06-03 09:26:222015亚冠之布里斯班狮吼
日期:2015-06-15 10:53:54
8 [报告]
发表于 2014-12-06 15:19 |只看该作者
reyleon 发表于 2014-12-05 10:40
sed -i 's/XXXXX/${WEEK_DAY}/g' ==> sed -i "s/XXXXX/${WEEK_DAY}/g"

sed -i  ...


麻烦解释一下单引号的解析顺序呗...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP