在docker中使用shell命令切割文本

目的

输入文本格式如下:
gene_id normalized_count
A1BG|1 30.5653
A1CF|29974 99.4377

希望将上述文本中“|”后半部分删除,只保留“|”前部分内容和空格后面部分内容,且将第一行第一列的表头“gene_id”改成“Gene symbol”,最后输出为新的“.txt”文本
输出文本内容格式如下:
Gene symbol normalized_count
A1BG 30.5653
A1CF 99.4377

主要步骤

进入指定容器中文件所在目录下

pc@dell MINGW64 /e/Docker Toolbox/lxx
$ docker ps -a // 先查看现有的所有容器,找到文件所在容器ID:“cd09b1b6dce8”
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS                      PORTS               NAMES
cd09b1b6dce8        ubuntu:latest               "/bin/bash"         25 hours ago        Exited (0) 21 seconds ago                       elated_mayer
63be9104e822        charade/xlibbox:cibersort   "/bin/bash"         5 days ago          Exited (255) 25 hours ago                       suspicious_hofstadter

pc@dell MINGW64 /e/Docker Toolbox/lxx
$ docker start cd09b1b6dce8 // 启动指定容器“cd09b1b6dce8”
cd09b1b6dce8

pc@dell MINGW64 /e/Docker Toolbox/lxx
$ docker attach cd09b1b6dce8 // 进入指定容器“cd09b1b6dce8”
root@cd09b1b6dce8:/#

root@cd09b1b6dce8:/# cd home //进入目标文件所在文件夹
root@cd09b1b6dce8:/home# ls
2.txt  3.txt  4.txt  LM22.txt  l.txt  lxx.normalized_results  lxx1.txt

使用cut函数截取“|”前面的部分,并输出为新的文本

root@cd09b1b6dce8:/home# cat l.txt //展开显示文件内容
gene_id normalized_count
A1BG|1  30.5653
A1CF|29974      99.4377
A2BP1|54715     1.1838
A2LD1|87769     309.9852
A2M|2   4851.1512
A2ML1|144568    0
A4GALT|53947    261.6159
A4GNT|51146     0
AAA1|404744     0
AAAS|8086       769.4584
AACS|65985      1147.0849

root@cd09b1b6dce8:/home# cut l.txt -d "|" -f 1 > 2.txt //截取1.txt文本中"|"前面的部分,输出为2.txt。详细说明可参考:https://blog.csdn.net/thy822/article/details/72626889

root@cd09b1b6dce8:/home# cat 2.txt
gene_id normalized_count
A1BG
A1CF
A2BP1
A2LD1
A2M
A2ML1
A4GALT
A4GNT
AAA1
AAAS
AACS

使用sed命令替换第一行内容

root@cd09b1b6dce8:/home# sed '1c Gene symbol' 2.txt > 5.txt // 将2.txt中第一行“gene_id normalized_count”替换成为“Gene symbol”,并写入5.txt。详细说明见:https://blog.csdn.net/feifei_csdn/article/details/80841442

root@cd09b1b6dce8:/home# cat 5.txt
Gene symbol
A1BG
A1CF
A2BP1
A2LD1
A2M
A2ML1
A4GALT
A4GNT
AAA1
AAAS
AACS

再次使用cut函数提取输入文件中空格后部分内容

root@cd09b1b6dce8:/home# cut l.txt -f 2 > 6.txt 

root@cd09b1b6dce8:/home# cat 6.txt
normalized_count
30.5653
99.4377
1.1838
309.9852
4851.1512
0
261.6159
0
0
769.4584
1147.0849

使用paste命令拼接两部分文本

root@cd09b1b6dce8:/home# paste 5.txt 6.txt > out.txt // 使用paste命令将5.txt 6.txt中的内容拼接到一起,将结果输出成为新的文件out.txt。详见:https://www.cnblogs.com/wcwen1990/p/7029357.html

root@cd09b1b6dce8:/home# cat  out.txt
Gene symbol     normalized_count
A1BG    30.5653
A1CF    99.4377
A2BP1   1.1838
A2LD1   309.9852
A2M     4851.1512
A2ML1   0
A4GALT  261.6159
A4GNT   0
AAA1    0
AAAS    769.4584
AACS    1147.0849

此时,目的已经达到,输出文件格式如上。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐