将文件名附加到每一行

Mik*_*ohn 2 unix bash append line

我需要在每一行的末尾添加文件名..这就是我的做法..

 files=($(ls | grep -i -E 'XYZ_')) 

 length=${#files[*]}
 for ((i=0;i<=$(($length - 1)); i++)) 
 do
    sed "s/$/$(basename ${files[$i]}) /g" ${files[$i]} >> output
 done
Run Code Online (Sandbox Code Playgroud)

问题是结果。。

这是一条线 20170302105D AAA.AAAE AR 1111 HHH1,0PPP

下面是它可能

20170302105D AAA.AAAE AR 1111 HHH1,0PPPXYZ_FILENAME

或者

20170302105D AAA.AAAE AR 1111 HHH1,0PPP XYZ_FILENAME

这是结果

20170302105D AAA.AAAE AR 1111 HHH1,0PPP

XYZ_文件名

20160307205D bbb.bbbE AR 12511 HHH1,0PPP

XYZ_文件名

所以它将文件名附加为新行..我该如何解决?

谢谢

hek*_*mgl 5

事实证明,Windows 行尾导致了这些问题。


无论如何,我建议为此使用这个单一awk命令。

awk '{print $0, FILENAME}' *XYZ_*
Run Code Online (Sandbox Code Playgroud)

(就是这样,没有外壳循环)