Bash 使用带有awk的通配符保存新文件名

Bash 使用带有awk的通配符保存新文件名,bash,awk,wildcard,Bash,Awk,Wildcard,我有22个文件,它们的编号从1到22。比如: bla.chr1.bla.norm bla.chr2.bla.norm 等等 我制作了一个简单的awk脚本,在第一列中添加文件名的特定编号: for i in {1..22} do awk '{print "'"$i "'" $0}' *.chr${i}.*.norm > *.chr${i}.*.norm.chr done 但是现在我想用我以前使用的通配符保存所有文件。有可能吗?试试这个,呆呆的 awk '{match(FILENA

我有22个文件,它们的编号从1到22。比如:

bla.chr1.bla.norm

bla.chr2.bla.norm

等等

我制作了一个简单的awk脚本,在第一列中添加文件名的特定编号:

for i in {1..22}

do 

awk '{print "'"$i "'" $0}' *.chr${i}.*.norm > *.chr${i}.*.norm.chr 

done
但是现在我想用我以前使用的通配符保存所有文件。有可能吗?

试试这个,呆呆的

awk '{match(FILENAME,"chr([0-9]+).",t); print t[1] $0 > FILENAME".chr"}' *.norm

是否要连接这些文件?然后使用
cat
,但是在保存文件时也可以
cat
扩展通配符吗?通配符在bash中的任何地方都有效,它们可以与任何命令一起使用。它不起作用。在使用
awk
命令之后,我在{1..22}中使用了:
for I;做cat*.chr${i}.*.norm.chr>>*.ALLCHR.*.norm.chr;完成
,但最终得到一个名为:
*.ALLCHR.*.norm.chr的文件
通配符匹配现有文件;它们不“记住”行上的前一个通配符匹配的内容,并且使用相同的值。