文本每行都应该换行吗(cat输出文件时会在末尾自动加上换行吗)

原创 2015年03月13日 16:16:55

问题起源

ArchStacker遇到一个很神奇的问题:cat输出文件时会在末尾自动加上换行吗?

在IRC上收到这条消息后,我自己测试了一下发现cat不会自动加换行。后面测试编辑器时发现是VIM/nano自动加上的换行。

虽然用VIM编辑的时候并不能看出末尾有一行空行。但是用hexdump命令以十六进制方式查看时,发现总是多出一个0x0a。于是误以为cat会给文件末尾加上换行。实际上是编辑器给自动加上的。

文本每行都应该换行

“根据2011年ISO发布的C语言标准C11(ISO/IEC 9899:2011)和C++标准C++11(ISO/IEC 14882:2011),每行末尾都应该换行。”
另外一致的行尾换行,有利于命令行工具的协同工作。

比如合并两个文本文档,简单地用cat file1 file2 > result即可。但这是因为每行都有换行结尾。否则还得想办法给两文档之间插入换行。
再如简单地给文本末尾加上一行,是简单的echo somethingnew >> file呢,还是echo -e '\n' >> file; echo somethingnew >> file 呢?
kandu@#ubuntu-cn曰: “因为unix并没有一个真实的 eof 字符存在。若一个处理文本流的daemon不断接受字符串。它是等到\n才进行处理。你若写个程序将一个未用\n结尾的文本全部喂给 daemon, daemon 没看到 \n 就不知道最后一行是已经结束了。unix 界有约定文本最后一行要\n。 ”
感觉在Windows GUI环境完全不用关心这些琐事。而严重依赖于文本的UNIX环境却对每行文本是否必须得有EOL结尾都斤斤计较。
第一次注意到“文本每行都应该换行”这个约定(convention)。

参考文献

版权声明:Hoxily bless you.

在 Shell 中用 echo 输出变量丢失换行符的问题

原文链接:http://hi.baidu.com/moligaloo/item/b404cf0736d085dd72e6765f 若 foo.txt 是一个含有多行文本的文本文件,如: hello...
  • u011513212
  • u011513212
  • 2013年10月20日 13:01
  • 7653

Linux Sed命令详解+如何替换换行符"\n"(很多面试问道)

Sed Sed是一个强大的文本处理工具 可以采用正则匹配,对文本进行插入删除修改等操作 . . . 三 、一个比较有趣的例子 如何替换\n也就是把所有的行都归为一行 第一种方式...
  • Hello_Hwc
  • Hello_Hwc
  • 2014年10月15日 21:12
  • 40767

Linux_cat_使用cat 和 结束符 输出多行文本

楼主这几天遇到了一个比较新奇的用法特此记录一下。 为用 cat 输出多行文件到屏幕上。 大家先感受一下,接下来再做详细介绍 程序: #! /bin/bash cat ...
  • u010003835
  • u010003835
  • 2016年11月25日 10:59
  • 1498

Linux下的换行符\n\r以及txt和word文档的使用

Linux doc   by: zollty WINDOWS下记事本编写的文档和LINUX下VIM或者GEDIT等编写的文档的不同! 例如WINDOWS下编写的SH脚本,放到LINUX下执行可能会出错...
  • zollty
  • zollty
  • 2011年09月13日 17:13
  • 36060

Linux常用终端命令之cat、grep、echo

这篇文章只是介绍了一下三个命令的最简单用法,
  • u011841639
  • u011841639
  • 2014年05月19日 21:47
  • 4961

linux下与windows下的换行符

回车符号和换行符号产生背景  关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。在计算机还没有出现之前,有一种叫做电传打字机(Teletype M...
  • wjcquking
  • wjcquking
  • 2011年07月26日 12:53
  • 106898

Linux CAT与ECHO命令详解

cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的; cat主要有三大功能: 1.一次显示整个文件。 $ cat   filename 2.从键盘创建一个文件。 $ cat  ...
  • jianjian610094863
  • jianjian610094863
  • 2015年01月30日 12:28
  • 4142

shell 脚本中将输出内容赋值给一个变量时的换行问题

如题,将某命令的输出结果赋值给一个变量 a 如果使用 echo $a 输出变量,则变量中的 换行都会被忽略掉,所有内容输出到一行 而使用 echo "$a"  可正常输出变量中的换行 ...
  • stormbjm
  • stormbjm
  • 2014年02月13日 20:57
  • 26957

用cat命令向文件末尾追加

例如有两个文件:a.txt 和b.txt 如果要将a.txt的内容追加到b.txt文件的末尾。可用下面命令cat a.txt >> b.txt...
  • haohaibo031113
  • haohaibo031113
  • 2017年05月26日 19:37
  • 574

echo等追加到文件末尾

1.覆盖    echo  "" >文件名     2.追加   echo ""  >>文件名
  • liu0808
  • liu0808
  • 2017年08月30日 09:00
  • 624
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文本每行都应该换行吗(cat输出文件时会在末尾自动加上换行吗)
举报原因:
原因补充:

(最多只允许输入30个字)