免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 24594581 | 回复: 24594581

[系统管理] sed的N命令求解 [复制链接]

论坛徽章:
1
技术图书徽章
日期:2016-02-03 16:35:25
发表于 2015-11-16 22:31 |显示全部楼层
需求:
将paths文件中的路径用逗号连起来。
/opt/virtprovider/lib
/var/adm/syslog
/usr/bin/
/usr/local/bin

我的sed脚本:
N                       
s/ \n/,/
P
D
但是效果为:
/opt/virtprovider/lib,/var/adm/syslog
/usr/bin/,/usr/local/bin

为什么结果是两行不是一行输出?求大神啊!
NPD不是构成了一个循环一直轮许下去么?小白求解,谢谢啊!

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-11-20 06:20:00
发表于 2015-11-17 10:46 |显示全部楼层
本帖最后由 hrbeu06ws 于 2015-11-17 15:05 编辑

可以试试这个
  1. sed -e ':a;N;$!ba;s/\n/,/g' /path/of/file
复制代码
或者用tr命令
  1. tr '\n' ',' < /path/of/file | sed 's/,$//'
复制代码

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
发表于 2015-11-17 11:34 |显示全部楼层
  1. sed 'N;s/\n/,/' file
  2. /opt/virtprovider/lib,/var/adm/syslog
  3. /usr/bin/,/usr/local/bin
复制代码

论坛徽章:
1
技术图书徽章
日期:2016-02-03 16:35:25
发表于 2015-11-17 14:55 |显示全部楼层
怎样理解:a;N;$!ba这几个命令啊
回复 2# hrbeu06ws


   

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-11-20 06:20:00
发表于 2015-11-17 15:21 |显示全部楼层
本帖最后由 hrbeu06ws 于 2015-11-17 15:26 编辑

回复 4# 陈卓文

首先读取第一行,并且定义一个label a。其次执行N命令读取第二行,并且追加到模式空间。再次执行ba命令无条件跳转到label a,最后替换'\n'为',' ,到此为止第一行和第二行已经合并为一行,以此类推,直到最后一行。$!的意思是不对最后一行进行处理,直接输出。

同理也可以写成如下这种方式,即先执行替换,然后在跳转回label a
  1. sed -e ':a;N;s/\n/,/g;$!ba' /path/of/file
复制代码

论坛徽章:
1
技术图书徽章
日期:2016-02-03 16:35:25
发表于 2015-11-18 15:24 |显示全部楼层
谢谢!
回复 5# hrbeu06ws


   

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
发表于 2015-11-18 19:09 |显示全部楼层
Shell版置顶的那几个帖子楼主应该好好看看

论坛徽章:
1
技术图书徽章
日期:2016-02-03 16:35:25
发表于 2015-11-19 00:38 |显示全部楼层
好的啊!最近在看sed&awk这本书,这两个工具学好了就深究SHELL
回复 7# chenyx


   

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
发表于 2015-11-19 08:59 |显示全部楼层
我记得Shell板有一个ABS的书,你应该看看,讲bash的

论坛徽章:
1
技术图书徽章
日期:2016-02-03 16:35:25
发表于 2015-11-20 15:55 |显示全部楼层
是啊看ABS!谢谢
回复 9# chenyx


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP