您的位置:首页 > 其它

多行文件变一行

2013-11-19 19:30 176 查看
我给出了如下三种方法:
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的默认行为就是打印输出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: