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