免费注册 查看新帖 |

Chinaunix

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

'$'行末尾定位的奇怪问题,发现终端的输出与重定向文本的输出不一样,怎么回事?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-24 14:12 |只看该作者 |倒序浏览
文本输出的是对的 ,终端直接显示的不对 。实例1如下
[tianbc@localhost chap03]$ cat datafile  //查看文件内容
northwest        NW        Charles Main                3.0        .98        3        34

western                WE        Sharon Gray                5.3        .97        5        23

southwest        SW        Lewis Dalsass                2.7        .8        2        18

southern        SO        Suan Chin                5.1        .95        4        15

southeast         SE        Patricia Hemenway        4.0        .7        4        17

eastern                EA        TB Savage                4.4        .84        5        20

northeast         NE        AM Main Jr.                5.1        .94        3        13

north                NO        Margot Weber                4.5        .89        5         9

central                CT         Ann Stephens                5.7        .94        5        13


[tianbc@localhost chap03]$ sed '/west/,/east/s/^/**sdfds**/' datafile //从第一个符合west模式 到 第一个 符合 east模
                                                                 //式的行之间 所有行首添加为**sdfds**,结果符合
**sadfa**northwest        NW        Charles Main                3.0        .98        3        34

**sadfa**western                WE        Sharon Gray                5.3        .97        5        23

**sadfa**southwest        SW        Lewis Dalsass                2.7        .8        2        18

**sadfa**southern        SO        Suan Chin                5.1        .95        4        15

**sadfa**southeast         SE        Patricia Hemenway        4.0        .7        4        17

eastern                EA        TB Savage                4.4        .84        5        20

northeast         NE        AM Main Jr.                5.1        .94        3        13

north                NO        Margot Weber                4.5        .89        5         9

central                CT         Ann Stephens                5.7        .94        5        13
[tianbc@localhost chap03]$ sed '/west/,/east/s/$/**sdfds**/' datafile   //跟上一个类似只是换成$应该是行尾。结果如  
                                                                    //下 ,不符合
**sadfa**        NW        Charles Main                3.0        .98        3        34
**sadfa**WE        Sharon Gray                5.3        .97        5        23
**sadfa**        SW        Lewis Dalsass                2.7        .8        2        18
**sadfa**SO        Suan Chin                5.1        .95        4        15
**sadfa**         SE        Patricia Hemenway        4.0        .7        4        17
eastern                EA        TB Savage                4.4        .84        5        20
northeast         NE        AM Main Jr.                5.1        .94        3        13
north                NO        Margot Weber                4.5        .89        5         9
central                CT         Ann Stephens                5.7        .94        5        13
下面是 文本 输出的,命令后 加了个 >a
northwest        NW        Charles Main                3.0        .98        3        34
**sadfa**
western                WE        Sharon Gray                5.3        .97        5        23
**sadfa**
southwest        SW        Lewis Dalsass                2.7        .8        2        18
**sadfa**
southern        SO        Suan Chin                5.1        .95        4        15
**sadfa**
southeast         SE        Patricia Hemenway        4.0        .7        4        17
**sadfa**
eastern                EA        TB Savage                4.4        .84        5        20

northeast         NE        AM Main Jr.                5.1        .94        3        13

north                NO        Margot Weber                4.5        .89        5         9

central                CT         Ann Stephens                5.7        .94        5        13

[ 本帖最后由 baidianniupi 于 2008-7-24 14:25 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
2 [报告]
发表于 2008-07-24 14:15 |只看该作者
dos2unix datafile

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2008-07-24 14:24 |只看该作者
cat -A  ur-file

论坛徽章:
0
4 [报告]
发表于 2008-07-24 14:31 |只看该作者
原帖由 ly5066113 于 2008-7-24 14:15 发表
dos2unix datafile

转换后果然对了,但不太明白为什么?不就是多了个\r吗?为什么不显示替换的内容呢?

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
5 [报告]
发表于 2008-07-24 14:34 |只看该作者
原帖由 baidianniupi 于 2008-7-24 14:31 发表

转换后果然对了,但不太明白为什么?不就是多了个\r吗?为什么不显示替换的内容呢?


显示了,只不过在把原来的第一列覆盖了。
找个打印机,打出来你就知道了。
后者替换的内容短一点:
sed '/west/,/east/s/$/**/' datafile

论坛徽章:
0
6 [报告]
发表于 2008-07-24 14:38 |只看该作者
原帖由 寂寞烈火 于 2008-7-24 14:24 发表
cat -A  ur-file

显示如下 :
unix格式文件

northwest^INW^ICharles Main^I^I3.0^I.98^I3^I34$
western^I^IWE^ISharon Gray^I^I5.3^I.97^I5^I23$
southwest^ISW^ILewis Dalsass^I^I2.7^I.8^I2^I18$
southern^ISO^ISuan Chin^I^I5.1^I.95^I4^I15$
southeast ^ISE^IPatricia Hemenway^I4.0^I.7^I4^I17$
eastern^I^IEA^ITB Savage^I^I4.4^I.84^I5^I20$
northeast ^INE^IAM Main Jr.^I^I5.1^I.94^I3^I13$
north^I^INO^IMargot Weber^I^I4.5^I.89^I5^I 9$
central^I^ICT ^IAnn Stephens^I^I5.7^I.94^I5^I13$
dos格式 文件

northwest^INW^ICharles Main^I^I3.0^I.98^I3^I34^M$
western^I^IWE^ISharon Gray^I^I5.3^I.97^I5^I23^M$
southwest^ISW^ILewis Dalsass^I^I2.7^I.8^I2^I18^M$
southern^ISO^ISuan Chin^I^I5.1^I.95^I4^I15^M$
southeast ^ISE^IPatricia Hemenway^I4.0^I.7^I4^I17^M$
eastern^I^IEA^ITB Savage^I^I4.4^I.84^I5^I20^M$
northeast ^INE^IAM Main Jr.^I^I5.1^I.94^I3^I13^M$
north^I^INO^IMargot Weber^I^I4.5^I.89^I5^I 9^M$
central^I^ICT ^IAnn Stephens^I^I5.7^I.94^I5^I13^M$
还是没明白为什么文本显示 和 终端 显示 的 异同?

论坛徽章:
0
7 [报告]
发表于 2008-07-24 14:45 |只看该作者
原帖由 ly5066113 于 2008-7-24 14:34 发表


显示了,只不过在把原来的第一列覆盖了。
找个打印机,打出来你就知道了。
后者替换的内容短一点:
sed '/west/,/east/s/$/**/' datafile

这个覆盖可以看出来,但为什么会覆盖掉呢?

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
8 [报告]
发表于 2008-07-24 14:47 |只看该作者
原帖由 baidianniupi 于 2008-7-24 14:45 发表

这个覆盖可以看出来,但为什么会覆盖掉呢?


因为回车符(就是你看到的^M)呀,回车就是回到行首不换行。

论坛徽章:
0
9 [报告]
发表于 2008-07-24 14:51 |只看该作者
你试试echo -e "abcdef^M123"就知道了,^M的输入方法是CTRL+V+M,或者CTRL+V+回车,回车的意思是回到行首,所以结果就是显示123def,abc被123覆盖了。

论坛徽章:
0
10 [报告]
发表于 2008-07-24 14:56 |只看该作者
原帖由 ly5066113 于 2008-7-24 14:47 发表


因为回车符(就是你看到的^M)呀,回车就是回到行首不换行。

明白了,谢谢 。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP