这是一个非常基础的概念,但我从未能很好地表达出来。我想尝试拼写一下并看看我错在哪里。
如果必须要定义“换行符”,那该怎么做呢?比如我在Unix(或Windows)中创建一个新文件,那么文件是否通过在文件中插入一个特殊字符来存储“行末”信息,这个特殊字符被称为“换行符”?如果是这样的话,它的ASCII值是多少?我记得在C程序中,我会检查读取的字符是否等于'\n'的值。还有为什么这两个令人困惑的字符被用来表示行末字符呢?
bash$ cat states
California
Massachusetts
Arizona
假设我想在两行之间插入一行空白,并且希望输出格式如下:
Desired output:
California
Massachusetts
Arizona
bash$sed -e 's/\n/\n\n/g' states does not work.
为什么我不能像处理其他字符一样处理“换行符”,并执行类似上面的命令。(我知道有人可能会说这是sed语法问题,但是请解释一下不允许这样做的原因,以便我能消除困惑。)同样,在vim编辑器中,我不能使用:%s/\n/\n\n/g。为什么?
在sed和vim内部,我需要进一步用反斜杠转义\n吗?
谢谢,
Jagrati
\n
不是换行符,它是在C字符和字符串字面量(以及其他一些上下文中)表示换行符的符号。源代码中实际的真正换行符当然是看不见的,除非它结束了该行。这就是为什么你在使用sed时会遇到问题:\n
在该程序中并不代表换行符。 - Tyler McHenry