我有字符串,我想格式化。我想删除第二个;和第二个最后一个;之间的所有内容。
输入
cellular organisms;Eukaryota;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Protostomia;Ecdysozoa;Panarthropoda;Arthropoda;Mandibulata;Pancrustacea;Hexapoda;Insecta;Dicondylia;Pterygota;Neoptera;Endopterygota;Coleoptera;Polyphaga;Cucujiformia;Tenebrionoidea;Tenebrionidae;Tenebrionidae incertae sedis;Tribolium;Tribolium castaneum; 输出
cellular organisms;Eukaryota;Tribolium castaneum;我试过使用sed
sed 's/;[^;]*//' <<<"cellular organisms;Eukaryota;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Protostomia;Ecdysozoa;Panarthropoda;Arthropoda;Mandibulata;Pancrustacea;Hexapoda;Insecta;Dicondylia;Pterygota;Neoptera;Endopterygota;Coleoptera;Polyphaga;Cucujiformia;Tenebrionoidea;Tenebrionidae;Tenebrionidae incertae sedis;Tribolium;Tribolium castaneum;"产生
cellular organisms;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Protostomia;Ecdysozoa;Panarthropoda;Arthropoda;Mandibulata;Pancrustacea;Hexapoda;Insecta;Dicondylia;Pterygota;Neoptera;Endopterygota;Coleoptera;Polyphaga;Cucujiformia;Tenebrionoidea;Tenebrionidae;Tenebrionidae incertae sedis;Tribolium;Tribolium castaneum;发布于 2015-03-22 18:03:04
另一种sed方法是:
sed 's/\(^[^;]*\;[^;]*\).*\(\;[^;]*\;$\)/\1\2/'输出:cellular organisms;Eukaryota;Tribolium castaneum;
发布于 2015-03-22 15:38:28
用sed来做
sed 's/\(\([^;]*\;\)\{2\}\).*\;\([^;]*;\)/\1\3/'发布于 2015-03-23 04:23:11
通过python3:
#!/bin/python3
import sys
fil = sys.argv[1]
with open(fil) as f:
for line in f:
m = line.strip().split(';')
print(';'.join(m[:2]+m[-2:]))将上述内容保存在一个名为script.py的文件中,然后使用以下方法运行:
python3 script.py filehttps://unix.stackexchange.com/questions/191795
复制相似问题