perl - 使用 perl -p -e 停产

标签 perl echo eol

让我们从这里开始:

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

当我用 vim 打开 dos 文件时,我得到了烦人的 ^M,即使使用 set ffs=unix,dos,mac,vim 也无法将 dos 文件识别为 dos 格式

因此我进一步调查了一些:

$ 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.|

我注意到每个文件的末尾都会出现一个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|

来自man echo

-n     do not output the trailing newline

关于perl - 使用 perl -p -e 停产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25910715/

相关文章:

perl - re.pl : Variable not properly scoped inside block

perl - 在perl中将序列值转换为日期

php - 我的 echo 语句不会显示在 html 行中

echo - Apache MINA SSHD session 在使用 ProcessShellFactory 时回显字符两次,控制字符不起作用

xml - PL SQL XMLDOM 改变行结尾

perl 查询使用 -pie

string - Perl 字符串连接覆盖字符串

java - Java InputStream 到 OutputStream 的非阻塞回显

CSS 行尾字符

python - 当尝试在 python 中打印 a\时扫描字符串文字时 EOL