将文件名附加到每一行 [英] append filename to each line

查看:31
本文介绍了将文件名附加到每一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I need to add the filename at the end of each line.. this is how I do it..

 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

here's a line 20170302105D AAA.AAAE AR 1111 HHH1,0PPP

这就是它可能的样子

20170302105D AAA.AAAE AR 1111 HHH1,0PPPXYZ_FILENAME

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

这是结果

20170302105D AAA.AAAE AR 1111 HHH1,0PPP

20170302105D AAA.AAAE AR 1111 HHH1,0PPP

XYZ_FILENAME

XYZ_FILENAME

20160307205D bbb.bbbE AR 12511 HHH1,0PPP

20160307205D bbb.bbbE AR 12511 HHH1,0PPP

XYZ_FILENAME

XYZ_FILENAME

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

So it appends the filename as a new line.. How can I solve it?

谢谢

推荐答案

结果是 Windows 行尾导致了这些问题.

It turned out that Windows line endings were causing the issues.

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

Anyhow I recommend to use this single awk command for that.

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

(就是这样,没有shell循环)

(that's all, no shell loop)

这篇关于将文件名附加到每一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆