简述
有时候需要将文件中的多行,转换为一行记录到文件中。以下介绍了在Linux和Windows下的解决方法。
Linux下
- awk
说明:awk默认将记录分隔符(record separator即RS)设置为\n,此行代码将RS设置为EOF(文件结束),也就是把文件视为一个记录,然后通过gsub函数将\n替换成空格,最后输出。# 将文件中的多行转为一行,并以空格作为间隔 awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' file
- sed
说明:sed默认只按行处理,N可以让其读入下一行,再对\n进行替换,这样就可以将两行并做一行。但是怎么将所有行并作一行呢?可以采用sed的跳转功能。:a 在代码开始处设置一个标记a,在代码执行到结尾处时利用跳转命令t a重新跳转到标号a处,重新执行代码,这样就可以递归的将所有行合并成一行。sed ':a ; N;s/\n/ / ; t a ; ' file
- xargs
说明:这可能是最简单的一种方式。
其实xargs就是对shell命令行参数限制做的一个扩展。这条命令的含义也很简单,将file中的内容作为参数传给X程序, 如果用echo作为X程序,则命令为:cat file | xargs echo
此命令和cat file | xargs 行为一致,因为xargs的默认行为就是打印输出。
Windows下
- notepad++工具
1、使用notepad++打开文件
2、Ctrl+F,调出查找/替换工具
3、根据箭头选择替换,并选择扩展模式。查找目标为\r\n
,替换为空格(想换什么就输入进去就行)
4、然后点击全部替换
参考信息
内容都是从以下两篇文章中来的,这里做了搬运。
linux shell 将多行文件转换为一行
使用Notepad++将多行数据合并成一行