让我们从这开始:
echo "1 2 3 4 5 6" | perl -pe 's/ /\n/g' > unix.txt
echo "1 2 3 4 5 6" | perl -pe 's/ /\r\n/g' > dos.txt
echo "1 2 3 4 5 6" | perl -pe 's/ /\r/g' > mac.txt
Run Code Online (Sandbox Code Playgroud)
当我用vim打开dos文件时,我觉得很烦人^M,vim也不会将dos文件识别为dos格式set ffs=unix,dos,mac.
因此我进一步调查了一下:
$ hexdump -C unix.txt
00000000 31 0a 32 0a 33 0a 34 0a 35 0a 36 0a |1.2.3.4.5.6.|
$ hexdump -C dos.txt
00000000 31 0d 0a 32 0d 0a 33 0d 0a 34 0d 0a 35 0d 0a 36 |1..2..3..4..5..6|
00000010 0a |.|
$ hexdump -C mac.txt
00000000 31 0d 32 0d 33 0d 34 0d 35 0d 36 0a |1.2.3.4.5.6.|
Run Code Online (Sandbox Code Playgroud)
我注意到0a每个文件的末尾都会出现一个.我不明白为什么.如何摆脱它?
echo "1 2 3 4 5 6" | hexdump -C
00000000 31 20 32 20 33 20 34 20 35 20 36 0a |1 2 3 4 5 6.|
--------------------------------------------^^
echo -n "1 2 3 4 5 6" | hexdump -C
00000000 31 20 32 20 33 20 34 20 35 20 36 |1 2 3 4 5 6|
Run Code Online (Sandbox Code Playgroud)
从 man echo
-n do not output the trailing newline
Run Code Online (Sandbox Code Playgroud)