書式を設定したい文字列があります。 2番目と2番目から最後の間の;
すべてを削除したいと思います;
。
入力する
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;
ベストアンサー1
以下を使用すると、簡単にこれを行うことができますawk
。
awk -F\; '{print $1 ";" $2 ";" $(NF-1) ";" $NF}'
;
これは()を使用して入力を分割し-F\;
、最初の($1
)、2番目($2
)、2番目から最後と最後のフィールド(および$(NF-1)
;$NF
にNF
はフィールド数を含む)を印刷します。
次のバリアントは、出力で指定されたフィールド区切り文字を再利用します。
awk -F\; '{print $1 FS $2 FS $(NF-1) FS $NF}'
ジャニスまた、拡張バージョンを使用することをお勧めしますOFS
。
awk 'BEGIN{FS=OFS=";"} {print $1,$2,$(NF-1),$NF}'
または、区切り文字を別のパラメータとして保持したい場合:
awk -F\; 'BEGIN{OFS=FS} {print $1,$2,$(NF-1),$NF}'