linux shell 将多行文件转换为一行 如下三种方法: 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-ected 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\Linux的一些工具设计很巧妙,每一项工具仅专注于完成一个功能。往往组合起来就能实现很强大的功能。 各种工具,拼凑完成运维的任务,和代码完成的功能一样,但却能顺手拈来,省掉了冗长的程序代码。 |
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。