LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: seablue

如何用sed合并两行?

[复制链接]
发表于 2004-7-13 21:48:44 | 显示全部楼层
没明白!请指点一下
cat aa.txt | sed '/abcde/{N;s/\n//}'   
sed: -e expression #1, char 17: Unknown option to 's'
发表于 2004-7-13 23:53:14 | 显示全部楼层
最初由 5sky 发表
没明白!请指点一下
cat aa.txt | sed '/abcde/{N;s/\n//}'   
sed: -e expression #1, char 17: Unknown option to 's'

这也许是sed版本的问题,可以参阅alphatan兄的方法 ,写成一个
sed脚本,如test.sed
sed -f test.sed filename
发表于 2004-8-1 02:26:57 | 显示全部楼层
cat aa.txt | sed '/abcde/{N;s/\n//}'

如果去掉N;那就应该是把所有行连成一行了?但是效果好象不是这样诶
发表于 2004-8-1 13:35:41 | 显示全部楼层
不是所有的连成一行,
而是当前行于下一行合并。

  1. $ cat file
  2. abc
  3. de
  4. fg
  5. hij

  6. $ cat file|sed -e '/.*/{N;s/\n//}'
  7. abcde
  8. fghij
复制代码
发表于 2004-8-1 15:23:58 | 显示全部楼层
如果去掉N;

编成
sed -e '/.*/{s/\n//}'
效果是不对文件做任何改动,为什么不是把所有行连成一行了?
[public@xiaocong temp]$ cat file
abc
de
fg
hij
[public@xiaocong temp]$ cat file|sed -e '/.*/{N;s/\n//}'
abcde
fghij
[public@xiaocong temp]$ cat file|sed -e '/.*/{s/\n//}'
abc
de
fg
hij
发表于 2006-2-18 07:49:50 | 显示全部楼层
Post by xiaocong213
编成
sed -e '/.*/{s/\n//}'
效果是不对文件做任何改动,为什么不是把所有行连成一行了?

因为将每一行作为pattern的时候,\n是没有了,但输出是shell仍然会echo一个\n.只有将
  1. abcd\nef
复制代码
这两行都放到pattern space里,才会形成abcdef变为一行,然后再输出\n的结果。
回复 支持 反对

使用道具 举报

发表于 2007-4-26 18:21:43 | 显示全部楼层
sed -e 'N' -e 's/\n/ /' inputfile
回复 支持 反对

使用道具 举报

发表于 2007-4-26 18:24:02 | 显示全部楼层
Post by seablue
This is a test,
hello
ok
the bottom.

期望的结果:

This is a test,
hello ok
the bottom.

如果是这样便不好用xargs了


sed -e '2N' -e 's/\n/ /' inputfile
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表