说实话,虽然对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处,重新执行代码,这样就可以递归的将所有行合并成一行。

3. cat file | xargs

说明:这可能是最简单的一种方式。

This manual page documents the GNU version of xargs. xargs reads argu-
       ments from the standard input, delimited by blanks (which can be pro-
       tected with double or single quotes or a backslash) or newlines

上面是man手册对xargs的说明。其实xargs就是对shell命令行参数限制做的一个扩展。

这条命令的含义也很简单,将file中的内容作为参数传给X程序

如果用echo作为X程序,则命令为:

cat file | xargs echo

此命令和cat file | xargs 行为一致,因为xargs的默认行为就是打印输出。

unix的一些工具设计很巧妙,每一项工具仅专注于完成一个功能。往往组合起来就能实现很强大的功能。2年前刚刚工作的时候非常喜欢玩弄各种工具,拼凑完成运维的任务。和代码完成的功能一样,但却能顺手拈来,省掉了冗长的程序代码。

最新文章

  1. Javascript之变量作用域
  2. 区块链是伟大的,比特币则不然。《FinTech,金融科技时代的来临》。3星。
  3. css slice和splice
  4. Redis桌面管理工具 RedisDesktopManager
  5. Centos7 + Windows7 双系统
  6. python urllib2的proxyhandler
  7. swfupload浅谈
  8. 读书笔记-HBase in Action-第二部分Advanced concepts-(2)Coprocessor
  9. Linux下用命令格式化U盘
  10. linux系统文件属性-硬连接、软连接
  11. Mysql re-set password, mysql set encode utf8 mysql重置密码,mysql设置存储编码格式
  12. mariadb 压缩包gz安装方式
  13. python3 OrderedDict类(有序字典)
  14. SOAR SQL进行优化和改写的自动化工具
  15. 双击启动tomcat中的startup.bat闪退原因及解决方法
  16. mysql 导入大文件
  17. 为DataGridView增加鼠标滚轮功能
  18. python读取文件操作.CSV
  19. 【转】基于Ubuntu Server16.04 安装Odoo11
  20. 查看mysql 库信息和表结构与表创建方法

热门文章

  1. 企业建立私有云的N个理由
  2. html颜色设定 - 网址不见了看这里
  3. 【图灵学院15】极致优化-高性能网络编程之BIO与NIO区别
  4. fabric java chaincode 开发
  5. Tarjan+LCA【洛谷P2783】 有机化学之神偶尔会做作弊
  6. docker 部署net core程序 curl访问地址 提示 Connection reset by peer
  7. 关于STM32F407启动后的系统时钟频率问题
  8. Job for postfix.service failed because the control process exited with error code. See "systemctl status postfix.service" and "journalctl -xe" for details.
  9. Appium教程——Desired Capabilities 详解(转自TesterHome)
  10. [转]cron语法