Jun*_*eng 4 linux bash concatenation
我有两个文件存储文件名列表:
FileA:
GSM1328513
GSM1328514
GSM1328515
GSM1328516
GSM1328545
GSM1328546
GSM1328547
GSM1328548
GSM1328609
GSM1328610
GSM1328611
GSM1328612
and:
FileB:
Brn
Hrt
Lng
Run Code Online (Sandbox Code Playgroud)
我想要做的是,连接fileA中列出的每四个文件,并将连接文件命名为fileB中列出的文件名:要手动执行,它看起来像:
cat GSM1328513 GSM1328514 GSM1328515 GSM1328516 > Brn
cat GSM1328545 GSM1328546 GSM1328547 GSM1328548 > Hrt
cat GSM1328609 GSM1328610 GSM1328611 GSM1328612 > Lng
Run Code Online (Sandbox Code Playgroud)
由于我有很长的文件列表,我想自动完成,任何人都可以提供帮助.如果有任何不清楚的地方,请指出.
另一种快速方法sed:
cat FileA | while read a ; do read b ; read c ; read d ;
echo "cat $a $b $c $d > " ; done | paste - FileB | bash
Run Code Online (Sandbox Code Playgroud)
正如Didier Trosset所说,你可以| bash在执行之前跳过它来查看它的作用.
其他方法:没有评估的单线程,将@dshepherd解决方案与我的相结合:
cat FileA | xargs -n4 echo | paste - FileB | while read a b c d e ; do cat $a $b $c $d > $e ; done
Run Code Online (Sandbox Code Playgroud)
优点:这是唯一一个班轮到目前为止不EVAL任何输出(| bash),不使用临时文件,并且只使用随处可见标准工具(cat,xargs,paste).