This is a very basic concept, but something I have never been able to articulate that well. and I would like to try to spell it and see where I go wrong.
If I have to, how would I define a "newline character". say if I create a new file in unix(or windows), then does the file store the "end of line" information by inserting a special character in the file called as "new line character". If so, what is its ascii value? I remember that in C programs, I have checked for the read character against the value '\n' . And why this confusing 2 characters to represent end of line characters..
bash$ cat states
California
Massachusetts
Arizona
Say, I want to insert one line space between the lines and want an output of the form: Desired output:
California
Massachusetts
Arizona
bash$sed -e 's/\n/\n\n/g' states does not work.
Why can't I treat "new line character" here just as I would treat any other character and run something like above command. (I understand that one might say that this is a matter of syntax of sed, but could one please explain the intuition behind not allowing this, so that I can get rid of my confusion.
Similarly, inside the vim editor, I can not use :%s/\n/\n\n/g . Why so?
Do I need to further escape \n by using a backslash in sed and from within vim?.
Thanks,
Jagrati
I see a lot of sed answers, but none for vim. To be fair, vim's treatment of newline characters is a little confusing. Search for \n but replace with \r. I recommend RTFM:
:help pattern
in general and:help NL-used-for-Nul
in particular.To do what you want with a :substitute command,
although I think most people would use something like
for the same effect.
Here is a way to find the answer for yourself. Run your file through xxd, which is part of the standard vim distribution.
You get
This shows that 46 is the hex code for C, 61 is the code for a, and so on. In particular, 0a (decimal 10) is the code for \n. Just for kicks, try
before filtering through xxd. You will see 0d0a (CRLF) as the line terminator.
Try this: