免费注册 查看新帖 |

Chinaunix

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

sed 数学运算 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-04 13:15 |只看该作者 |倒序浏览
sed -i '$-1 r file.a' file.b   

想实现这样的功能, 其中$为文件最后一行
问题就是$-1并不成立, 那么sed 中可否实现数学运算?

论坛徽章:
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
2 [报告]
发表于 2008-12-04 13:31 |只看该作者

回复 #1 dreamone503 的帖子

file.a追加到file.b. 何必sed?

论坛徽章:
0
3 [报告]
发表于 2008-12-04 13:37 |只看该作者
好想不行,

sed 'N;$!D;s/\n.*//' euf1

刻意这样

论坛徽章:
0
4 [报告]
发表于 2008-12-04 13:42 |只看该作者

回复 #2 blackold 的帖子

其实不是在文章最后追加
比如文件 file.b
111
222
333
kaka
111
222
333
.....
.....
.....
kaka
111
222
333
kaka

我想在某一个kaka前面加入一个文件的内容.  如何随便控制?
假设最后一个kaka的话我就想用这个实现  sed -i '$-1 r file.a' file.b

[ 本帖最后由 dreamone503 于 2008-12-4 13:44 编辑 ]

论坛徽章:
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
5 [报告]
发表于 2008-12-04 13:46 |只看该作者

回复 #4 dreamone503 的帖子

Sorry, 刚刚测试才知道我的命令是完全错误的。

[ 本帖最后由 blackold 于 2008-12-4 17:39 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-12-04 13:56 |只看该作者

回复 #5 blackold 的帖子

黑哥, 这个好复杂呀, 我觉得应该能简单些
能告诉我sed里怎么实现数学运算么?

论坛徽章:
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
7 [报告]
发表于 2008-12-04 14:00 |只看该作者

回复 #6 dreamone503 的帖子

用ed吧。支持$+-n运算。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
8 [报告]
发表于 2008-12-04 14:44 |只看该作者
原帖由 dreamone503 于 2008-12-4 13:56 发表
黑哥, 这个好复杂呀, 我觉得应该能简单些
能告诉我sed里怎么实现数学运算么?

sed里面并没有对这种东西的直接支持,awk里面也没有,虽然可以办到(也就是其实还是支持,只是并不明显),所以要学着曲线救国.

论坛徽章:
0
9 [报告]
发表于 2008-12-04 14:52 |只看该作者

回复 #7 blackold 的帖子

看了一下ed,  呵呵, 还是改天再学学吧, 学无止境阿

再问大家一个问题,
file.b
....
....
....
start sun (a  b  c  c
e f g h i j k l m n
);
....
....
....
end
....
....
....

sed -i '/start sun /,/end/ {/end/r file.a}' file.b
因为start 和 end 都成对出现, 所以我先通过/start sun /,/end/确定范围, 然后在end 前面添加另一个文件的内容.
可是似乎语法不通, 为什么? 怎么变通呢?

论坛徽章:
0
10 [报告]
发表于 2008-12-04 15:03 |只看该作者

回复 #8 cjaizss 的帖子

嗯, 关键是之前不确定数学运算行不行. 假设行问题就变得简单了
还有就是, 别的方法可以实现同样功能, 可是不够简洁, 觉得不是最好方法

能用一句话写完的就特不想罗里罗嗦写上2\3句
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP