如何在每行末尾添加一个字符串,相应于文件列表的文件名?

时间:2016-05-16 00:30:39

标签: bash awk sed

我想在每行附加文件名。 我想这可以用awk或sed完成。我试过这样的东西,但它没有用。

for file in *.cds; do  sed -i '/^>/ s/$/[file]/' $file ; done

我把[file]放在括号之间的文件名,比如[name1]。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

这应该做

for file in *.cds; do sed -i 's/$/['"$file"']/' "$file"; done

在每行末尾的方括号中附加文件名。

更新:我不知道为什么人们想在文件名中使用空格,但如下所述,您应引用bash变量以将其保留为两个实例的逻辑单元

如果您想限制仅以>开头的追加线,请将其添加为模式

for file in *.cds; do sed -i '/^>/s/$/['"$file"']/' "$file"; done

答案 1 :(得分:1)

使用GNU awk进行就地编辑:

awk -i inplace '{print $0 "[" FILENAME "]"}' *.cds