Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用awk或shell修改某些字段并将其插入到行中_Python_Awk_Gawk - Fatal编程技术网

Python 使用awk或shell修改某些字段并将其插入到行中

Python 使用awk或shell修改某些字段并将其插入到行中,python,awk,gawk,Python,Awk,Gawk,我有一个包含数千行的文本文件,我想通过做一些更改来更新这些行 原始行: b1522 ftp://ftp.genecard.giv.nlm.org/genome/all/ABC_001596115.1_ASM159611v1# dd1120 ftp://ftp.genecard.giv.nlm.org/genome/all/ABC_231146189.1_ASM159611v1# 期望输出: b1522 ftp://ftp.genecard.giv.nlm.org/genome/all

我有一个包含数千行的文本文件,我想通过做一些更改来更新这些行

原始行:

b1522   ftp://ftp.genecard.giv.nlm.org/genome/all/ABC_001596115.1_ASM159611v1#
dd1120  ftp://ftp.genecard.giv.nlm.org/genome/all/ABC_231146189.1_ASM159611v1#
期望输出:

b1522   ftp://ftp.genecard.giv.nlm.org/genome/all/ABC/001/596/115/ABC_001596115.1_ASM159611v1#
dd1120  ftp://ftp.genecard.giv.nlm.org/genomes/all/ABC/231/146/189/ABC_231146189.1_ASM159611v1#

我想从“ABC”复制到“.”前面的最后一个数字,将它们粘贴在“all”之后的两个正斜杠内,删除下划线,并在每三个字符后放置正斜杠。我不知道如何与awk合作。我的awk知识非常基础

我不知道如何在awk中完成,但您可以使用“sed”轻松完成

  sed -r -e 's%/(ABC_)((...)(...)(...))%/ABC/\3/\4/\5/\1\2%' < infile.txt > out file.txt
其中/ABC/\3/\4/\5/

是您正在(添加)插入的内容

和\1\2


正在将原始文本放回插入部分右侧

另一个类似的
sed

sed -i.bak -r 's~((ABC)_(...)(...)(...))~\2/\3/\4/\5/\1~' file
sed -i.bak -r 's~((ABC)_(...)(...)(...))~\2/\3/\4/\5/\1~' file