我有一个包含 1000 个文件的文件夹;前面的所有字符均mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp指个人 ID(例如 NA21117、NA21119、NA21126 等)
NA21117.mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp
NA21119.mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp
NA21126.mapped.ILLUMINA.bwa.GIH.low_coverage.20121211.bam_dp
NA21127.mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp
NA21137.mapped.ILLUMINA.bwa.GIH.low_coverage.20120522.bam_dp
NA21142.mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp
NA21143.mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp
Run Code Online (Sandbox Code Playgroud)
每个文件只有一行:
cat NA21143.mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp
1 115258827 10
Run Code Online (Sandbox Code Playgroud)
对于这些文件中的每一个,我想将个人 ID 粘贴到文件的内容中,并得到如下输出:
1 115258827 10 NA21143
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
使用循环:
#!/bin/bash
shopt -s nullglob
for file in ???????.mapped.*bam_dp; do
[[ -f "$file" ]] || continue
id=${file%%.*} # grab the ID from file name
sed -i "s/$/ $id/" "$file" # modify the file in-place
done
Run Code Online (Sandbox Code Playgroud)