【问题标题】:EOL with perl -p -e使用 perl -p -e EOL
【发布时间】:2014-09-18 10:53:34
【问题描述】:

让我们从这个开始:

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 出现在每个文件的末尾。我不明白为什么。如何摆脱它?

【问题讨论】:

    标签: perl echo eol


    【解决方案1】:
    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
    

    【讨论】:

      猜你喜欢
      • 2016-12-30
      • 2016-03-05
      • 2011-05-20
      • 2015-08-15
      • 2014-02-25
      • 2011-06-29
      • 2020-02-25
      • 2011-08-24
      • 1970-01-01
      相关资源
      最近更新 更多