如何连接两个文件与循环中的indentifer?

我有200个文件: cool1.txt,cool2.txt,..., cool100.txt and warm1.txt, warm2.txt,...,warm100.txt.

所有文件都有2列数据。

我想连接200个文件如下有coolwarm1.txt ,coolwarm2.txt,coolwarm100.txt

 cat cool1.txt warm1.txt > coolwarm1.txt cat cool2.txt warm2.txt > coolwarm2.txt ... cat cool100.txt warm100.txt > coolwarm100.txt 

在每个coolwarm * .txt文件中,我喜欢在连接后添加一个标识符“cool”和“warm”。

例如,coolwarm1.txt看起来像这样

 Input cool1.txt S44298 33307 S46800 32286 S55145 29361 warm1.txt S10253 27473 S24395 33093 Desired output for coolwarm1.txt S44298 33307 cool S46800 32286 cool S55145 29361 cool S10253 27473 warm S24395 33093 warm 

awk '{print FILENAME, $0}' cool1.txt warm1.txt > coolwarm1.txt会给我想要的东西,但我无法进一步pipe理。

非常感谢您的帮助。

 for n in `seq 1 100`; do cat cool$n.txt | awk '{print $0 " cool"}' > coolwarm$n.txt; cat warm$n.txt | awk '{print $0 " warm"}' >> coolwarm$n.txt; done 
 for i in 1 2 ; do cat cool${i}.txt | awk ' { print $1,$2,"cool" } ; ' ; cat warm${i}.txt | awk ' { print $1,$2,"warm" } ' ; done S44298 33307 cool S46800 32286 cool S55145 29361 cool S10253 27473 warm S24395 33093 warm S44298 33307 cool S46800 32286 cool S55145 29361 cool S10253 27473 warm S24395 33093 warm 
 for n in `seq 1..100` do sed 's/(.*)/\1 cool/' cool$n.txt >coolwarm$n.txt sed 's/(.*)/\1 warm/' warm$n.txt >>coolwarm$n.txt done 
 for i in {1..100} do awk '{print $0,FILENAME}' "cool${i}.txt" "warm${i}.txt" > "coolwarm${i}.txt" done 

如果你只是想把“cool”和“warm”作为标识符,根据需要在FILENAME上做一个substring ,比如substr(FILENAME,1,4)

或者你可以冒险,并在一个awk脚本中做到这一点

 #!/bin/bash awk 'BEGIN{ for( i=1 ; i <=100 ; i++ ){ coolname= "cool"i".txt" warmname= "warm"i".txt" output = "coolwarm"i".txt" while( ( getline line < coolname ) >0 ) { print line" cool" >> output } close( coolname ) while ( ( getline line < warmname ) > 0 ) { print line" warm" >> output } close( warmname ) } }'