linux 删除换行符的方法小结

2013-5-16 杜世伟 Linux

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

$ cat > file.txt <<EOF

a,
b,
c,
d,
e,
f,
d,

EOF

方法一:
通过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最后那个参数是空格,否则会报错
方法四:
sed ':a ; N;s/\n/ / ; t a ; ' file
说明:sed默认只按行处理,N可以让其读入下一行,再对\n进行替换,这样就可以将两行并做一行。但是怎么将所有行并作一行呢?可以采用sed的跳转功能。:a 在代码开始处设置一个标记a,在代码执行到结尾处时利用跳转命令t a重新跳转到标号a处,重新执行代码,这样就可以递归的将所有行合并成一行
方法五:
cat file.txt | xargs echo > new_file.txt
此命令和cat file | xargs 行为一致,因为xargs的默认行为就是打印输出。

标签: linux sed shell awk cat

Powered by emlog 沪ICP备2023034538号-1