linux下替换文件中的换行符

之前在linux系统执行以下命令: ls file |xargs sed -i 's/\n//g' 然而却发现没有任何效果,百度之后发现 sed是按行处理文本数据的,每次处理一行数据后,都会在行尾自动添加trailing newline...

之前在linux系统执行以下命令:

ls file |xargs sed -i 's/\n//g'

然而却发现没有任何效果,百度之后发现 sed是按行处理文本数据的,每次处理一行数据后,都会在行尾自动添加trailing newline。

如果非要使用sed命令,实现替换file文本内容的换行符为空的话,那么就要了解sed的分支条件命令,以及了解sed的pattern space模式空间和hold space保持空间。即,连续两行执行一次sed命令,这样就可以把前一行的\n替换完成。

最终实现命令如下例所示:

sed ":a;N;s/\n//g;ta" a.txt

N是把下一行加入到当前的hold space模式空间里,使之进行后续处理,最后sed会默认打印hold space模式空间里的内容。也就是说,sed是可以处理多行数据的。

:a和ta是配套使用,实现跳转功能。t是test测试的意思。 


  • 发表于 2018-05-24 10:35
  • 阅读 ( 5919 )
  • 分类:linux

0 条评论

请先 登录 后评论
安生水
安生水

328 篇文章

作家榜 »

  1. omicsgene 658 文章
  2. 安生水 328 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. 红橙子 78 文章
  6. CORNERSTONE 72 文章
  7. xun 68 文章
  8. rzx 67 文章