将文件名附加到每一行

时间:2017-03-08 13:56:36

标签: bash unix 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

问题是结果..

这是一条线 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_FILENAME

     

20160307205D bbb.bbbE AR 12511 HHH1,0PPP

     

XYZ_FILENAME

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

谢谢

1 个答案:

答案 0 :(得分:2)

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

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

awk '{print $0, FILENAME}' *XYZ_*

(这就是全部,没有shell循环)