为什么sed和perl没有使用<characters解析文件?

Tob*_*oby 1 regex bash perl sed

我正在尝试填充一些XML字段,以便在我正在执行的大量手动数据输入上给自己一个开头.

我正在尝试使用正则表达式和2个平面文件来翻译这样的文字:

EA10A3
Run Code Online (Sandbox Code Playgroud)

进入:

<nodevice id="EA10A3" seq=" " />
Run Code Online (Sandbox Code Playgroud)

这是sed发生的事情:

~/Tickets/RWSP-11422 > cat locations.txt
EA10A1
EA10A2
EA10A3

~/Tickets/RWSP-11422 > cat platform
  <nodevice id="PPPPPP" seq=" " />

~/Tickets/RWSP-11422 > while read i; do cat platform | sed "s/PPPPPP/$i/g"; done <locations.txt
" seq=" " />ice id="EA10A1
" seq=" " />ice id="EA10A2
" seq=" " />ice id="EA10A3
Run Code Online (Sandbox Code Playgroud)

和Perl一样:

~/Tickets/RWSP-11422 > while read i; do cat platform | perl -wpl -e "s/PPPPPP/$i/g"; done < locations.txt
" seq=" " />ice id="EA10A1
" seq=" " />ice id="EA10A2
" seq=" " />ice id="EA10A3
Run Code Online (Sandbox Code Playgroud)

我为什么要来

" seq=" " />ice id="EA10A1 
Run Code Online (Sandbox Code Playgroud)

代替

<nodevice id="EA10A1" seq=" " />
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

ike*_*ami 7

你得到了

<nodevice id="EA10A1^M" seq=" " />

因为你的输入文件包含

EA10A1^M^J

使用(例如)修复输入文件dos2unix.

(^ M表示回车符,^ J表示换行符.)