Skip to the content.

2.1 Linux Basic Homework

徐英泽 2024011267

返回引导页


0. 将test_command.gtf 复制入 docker /home/test/desktop

1. 查看原文件

test@bioinfo_docker:~$ cd /home/test/desktop
test@bioinfo_docker:~/desktop$ cat test_command.gtf
chr_IV  ensembl gene    1802    2953    .       +       .       gene_id "YDL248W"; gene_version "1";
chr_IV  ensembl transcript      802     2953    .       +       .       gene_id "YDL248W"; gene_version "1";
chromosome_IV   ensembl exon    1802    2953    .       +       .       gene_id "YDL248W"; gene_version "1";
chromosome_IV   ensembl CDS     1802    950     .       +       0       gene_id "YDL248W"; gene_version "1";
chr_IV  ensembl start_codon     1802    1804    .       +       0       gene_id "YDL248W"; gene_version "1";
chromosome_IV   ensembl stop_codon      2951    2953    .       +       0       gene_id "YDL248W"; gene_version "1";
chromosome_IV   ensembl gene    762     3836    .       +       .       gene_id "YDL247W-A"; gene_version "1";
chr_IV  ensembl transcript      3762    836     .       +       .       gene_id "YDL247W-A"; gene_version "1";

2. 使用相关命令或命令组合分别统计文件的行数以及字符数

test@bioinfo_docker:~/desktop$ wc test_command.gtf
  8  96 636 test_command.gtf
  
test@bioinfo_docker:~/desktop$ wc -l test_command.gtf
8 test_command.gtf				#行数
test@bioinfo_docker:~/desktop$ wc -c test_command.gtf
636 test_command.gtf			#字节数
test@bioinfo_docker:~/desktop$ wc -w test_command.gtf
96 test_command.gtf				#单词数
test@bioinfo_docker:~/desktop$ wc -m test_command.gtf
636 test_command.gtf			#字符数

test@bioinfo_docker:~/desktop$ wc -lc test_command.gtf
  8 636 test_command.gtf		#组合使用
test@bioinfo_docker:~/desktop$ wc -cl test_command.gtf
  8 636 test_command.gtf		#组合使用

(行数为8,单词数为96,字节数为636,也可使用-l -c指令分别统计文件的行数与字节数 )

3. 利用 grep 等命令尝试筛选并输出示例文件中以 chr_ 起始,并且基因id为 YDL248W 的行

method 1

test@bioinfo_docker:~/desktop$ grep "^chr_.*YDL248W" test_command.gtf
chr_IV  ensembl gene    1802    2953    .       +       .       gene_id "YDL248W"; gene_version "1";
chr_IV  ensembl transcript      802     2953    .       +       .       gene_id "YDL248W"; gene_version "1";
chr_IV  ensembl start_codon     1802    1804    .       +       0       gene_id "YDL248W"; gene_version "1";

method 2

test@bioinfo_docker:~/desktop$ grep "^chr_" test_command.gtf | grep "YDL248W"
chr_IV  ensembl gene    1802    2953    .       +       .       gene_id "YDL248W"; gene_version "1";
chr_IV  ensembl transcript      802     2953    .       +       .       gene_id "YDL248W"; gene_version "1";
chr_IV  ensembl start_codon     1802    1804    .       +       0       gene_id "YDL248W"; gene_version "1";

(’^’符号指行的开头,‘.’指任意字符,‘*’指前面的字符出现0次或无数次 )

4. 使用sed 等命令将示例文件中的 chr_ 替换为 chromosome_ 并输出每行的第1,3,4,5列

test@bioinfo_docker:~/desktop$  sed 's/chr_/chromosome_/g' test_command.gtf | cut -f 1,
3,4,5
chromosome_IV   gene    1802    2953
chromosome_IV   transcript      802     2953
chromosome_IV   exon    1802    2953
chromosome_IV   CDS     1802    950
chromosome_IV   start_codon     1802    1804
chromosome_IV   stop_codon      2951    2953
chromosome_IV   gene    762     3836
chromosome_IV   transcript      3762    836

5. 通过man命令以及更多的资料学习简单的 awk 命令,尝试互换示例文件的第2列和第3列,并且对输出结果利用 sort 命令依照第4和第5列数字大小排序,将最终结果输出到result.gtf文件中

test@bioinfo_docker:~/desktop$ awk '{print $1, $3, $2, $4, $5, $6, $7, $8, $9}' test_command.gtf | sort -k4,4n -k5,5n > result.gtf

test@bioinfo_docker:~/desktop$ ls /home/test/desktop
result.gtf  test_command.gtf

test@bioinfo_docker:~/desktop$ cat result.gtf
chromosome_IV gene ensembl 762 3836 . + . gene_id
chr_IV transcript ensembl 802 2953 . + . gene_id
chromosome_IV CDS ensembl 1802 950 . + 0 gene_id
chr_IV start_codon ensembl 1802 1804 . + 0 gene_id
chr_IV gene ensembl 1802 2953 . + . gene_id
chromosome_IV exon ensembl 1802 2953 . + . gene_id
chromosome_IV stop_codon ensembl 2951 2953 . + 0 gene_id
chr_IV transcript ensembl 3762 836 . + . gene_id

(导出至result.gtf后,检查desktop中是否含有该文件并打开该文件 )

6. 更改示例文件的权限,使得文件所有者及所在用户组用户可读、写、执行而其他用户只可读,展示权限修改前后的权限变化。

PS C:\Users\54727> docker exec -it -u root XuYingze_Linux bash

root@bioinfo_docker:/home/test# cd desktop

root@bioinfo_docker:/home/test/desktop# ls -hl test_command.gtf
-rwxr-xr-x 1 root root 636 Mar 10 08:21 test_command.gtf #修改前权限

root@bioinfo_docker:/home/test/desktop# chmod ug=rwx,o=r test_command.gtf

root@bioinfo_docker:/home/test/desktop# ls -hl test_command.gtf
-rwxrwxr-- 1 root root 636 Mar 10 08:21 test_command.gtf #修改后权限

(需要注意的是,在进入linux虚拟系统的指令中,加入-u root指令,才能以文件所有者身份进行操作,否则会被认定为其他用户 )