2017-03-08 117 views
0

我需要在每行的末尾添加文件名.. 这是我要做的事..追加文件名,每行

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

事实证明,Windows行结局导致的问题。


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

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

(这一切,无壳环)

+0

Nope..I得到相同的结果 –

+0

看起来象输入文件中有窗线的结局?如果是,请在运行'awk'之前将它们转换为UNIX – hek2mgl

+1

是的现在它可以工作,谢谢 –