免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: cao627
打印 上一主题 下一主题

[文本处理] sed 替换中变量展开的疑问 [复制链接]

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
41 [报告]
发表于 2013-01-27 21:02 |只看该作者
回复 39# blackold

echo aaa"${b}"aaa (这里应有双引号)的"等价表象"就是
echo aaab<字面的换行符>baaa


在shell提示符后输入:
echo aaab<字面的换行符>baaa
得到的shell执行输出不是
aaab
baaa

所以echo aaa"${b}"aaa 和echo aaab<字面的换行符>baaa是两个不等价表象。










   

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
42 [报告]
发表于 2013-01-27 21:07 |只看该作者
本帖最后由 blackold 于 2013-01-27 21:17 编辑

回复 41# cao627


    汗!

   我说的是经过shell解释后的字符串是 aaab<字面换行符>baaa。

在shell提示符后输入:
echo aaab<字面的换行符>baaa


直接输入就相当于两条命令: echo aaab命令和 baaa命令了。

其实你无法这样输入字面的换行符,因为它是shell特殊字符(control operator控制操作符)。这也是需要引用的原因。

论坛徽章:
0
43 [报告]
发表于 2013-01-27 21:51 |只看该作者
blackold 发表于 2013-01-27 21:07
其实你无法这样输入字面的换行符,因为它是shell特殊字符(control operator控制操作符)。这也是需要引用的原因。


好像可以?
       quoted-insert (C-q, C-v)
              Add the next character typed to the line verbatim.  This is  how  to  insert
              characters like C-q, for example.

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
44 [报告]
发表于 2013-01-27 22:40 |只看该作者
回复 43# hbmhalley


    这不是写着 quoted-insert 吗?

论坛徽章:
0
45 [报告]
发表于 2013-01-27 23:24 |只看该作者
回复 44# blackold


    啊我只是说 “echo aaab<字面的换行符>baaa” 这种东西是有可能的
    比如按这个 quoted-insert 输入,效果就是 “echo aaab^Mbaaa”

    ps: 回车输入的是 carriage return ($'\r') 而非 line feed ($'\n') ,执行上面那句 echo 效果比较奇葩

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
46 [报告]
发表于 2013-01-28 06:51 |只看该作者
回复 45# hbmhalley


   
啊我只是说 “echo aaab<字面的换行符>baaa” 这种东西是有可能的
    比如按这个 quoted-insert 输入,效果就是 “echo aaab^Mbaaa”


"echo aaab<字面的换行符>baaa" 有可能,前面的讨论也没有否定。
这与上面所说"直接"不是一回事。
即使是这样输入,得到"echo aaab^Jbaaa" 其中的newline还不是字面的字符吧。

ps: 回车输入的是 carriage return ($'\r') 而非 line feed ($'\n')


这是另一个问题了。这应该与环境有关吧,之间的关系我还不清楚。

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
47 [报告]
发表于 2013-01-28 17:52 |只看该作者
本帖最后由 cao627 于 2013-01-28 18:02 编辑

回复 42# blackold

    我说的是经过shell解释后的字符串是 aaab<字面换行符>baaa。


aaab<字面换行符>baaa是一个你造出来的表象,用来表达你心中模拟shell的理解。

我看到这个表象心里的活动和你是一样的,当然我们看到"aaab\bnaaa"心里也是这种活动。
所以aaab<字面换行符>baaa"aaa\naaa"这两个表象对我们两个讨论此话题的两个人来说是等价的,但shell来说是这是两个完全不同的表象。我前面说的表象一直是在从以shell为主体的角度说。

这个话题本身已经不是shell的话题了
我前面说过我是在就一个东西说和这个东西无关的话。
我不是用什么表象等价直接啊这些词语 故弄玄虚。
我的目的是表达当时的一些想法,并想把这些想法表达尽量概括些。才扯了这么些没用的概念。
其实对于shell技术来说,我说的这些都是没用的。










论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
48 [报告]
发表于 2013-01-28 18:34 |只看该作者
本帖最后由 blackold 于 2013-01-28 19:02 编辑

回复 47# cao627

aaab<字面换行符>baaa是一个你造出来的表象,用来表达你心中模拟shell的理解。

我看到这个表象心里的活动和你是一样的,当然我们看到"aaab\bnaaa"心里也是这种活动。
所以aaab<字面换行符>baaa 和 "aaa\naaa"这两个表象对我们两个讨论此话题的两个人来说是等价的,但shell来说是这是两个完全不同的表象。我前面说的表象一直是在从以shell为主体的角度说。

这个话题本身已经不是shell的话题了
我前面说过我是在就一个东西说和这个东西无关的话。
我不是用什么表象啊等价啊直接啊这些词语 故弄玄虚。
我的目的是表达当时的一些想法,并想把这些想法表达尽量概括些。才扯了这么些没用的概念。
其实对于shell技术来说,我说的这些都是没用的。


    只能说你我是不同星球的人。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP