linux shell 将多行文件转换为一行

2014-5-8 杜世伟 Linux

说实话,虽然对shell编程包括awk有所了解,但是对sed的多行与一行的处理还是不甚理解,在网上搜罗了一篇文章觉得还不错,记录一下:
 
 
今天一个工程师问我,怎么将一个文件中的多行转换成一行。
      我给出了如下三种方法:
      1. 采用awk
      awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' file
      说明:awk默认将记录分隔符(record separator即RS)设置为\n,此行代码将RS设置为EOF(文件结束),也就是把文件视为一个记录,然后通过gsub函数将\n替换成空格,最后输出。
      2. 采用sed
      sed ':a ; N;s/\n/ / ; t a ; ' file
      说明:sed默认只按行处理,N可以让其读入下一行,再对\n进行替换,这样就可以将两行并做一行。但是怎么将所有行并作一行呢?可以采用sed的跳转功能。:a 在代码开始处设置一个标记a,在代码执行到结尾处时利用跳转命令t a重新跳转到标号a处,重新执行代码,这样就可以递归的将所有行合并成一行。

阅读全文>>

标签: linux shell awk

评论(0) 浏览(9528)

linux 删除换行符的方法小结

2013-5-16 杜世伟 Linux

linux 删除换行符的方法小结

工作中时而不时会遇到,替换文件中换行符把内容转换为一行,以下是笔者总结的一些常见的实现方式,仅供参考!转载请注明出处

方法一:

通过awk
awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' file.txt
说明:awk默认将记录分隔符(record separator即RS)设置为\n,此行代码将RS设置为EOF(文件结束),也就是把文件视为一个记录,然后通过gsub函数将\n替换成空格,最后输出
方法二:
通过vim打开文件,然后输入命令:%s/\n//g替换所以的换行符
方法三:
通过使用td命令,cat file.txt | tr '\n' ' '
注意tr最后那个参数是空格,否则会报错

阅读全文>>

标签: linux sed shell awk cat

评论(0) 浏览(8107)

Powered by emlog 沪ICP备2023034538号-1