特定のパターンの前と他のパターンの後のすべての単語を削除します。

特定のパターンの前と他のパターンの後のすべての単語を削除します。

行が多いファイルがあります。各行はパターンで始まり、gi_[0-9]タブと単語のリストが順番に続き、すべてセミコロンで区切られます。最後の8単語だけ維持したいです(最後の部分に2単語があるので7部分)。

これは例です入力する文書:

gi_1\tDog;Pink;Blue;Beige;Yellow;Orange;Red;Green irish

gi_2\tPork;Black;White;Beige;Brown;Cyan;Purple;Red pepper

これ対応する出力しなければならない:

gi_1\tPink;Blue;Beige;Yellow;Orange;Red;Green irish

gi_2\tBlack;White;Beige;Brown;Cyan;Purple;Red pepper

ノート:タブ文字を挿入する方法が見つからなかったので、代わりに\ tを書きましたが、ファイルにタブ表示ができました。

ベストアンサー1

短いsed方法:

sed 's/^\(.*\t\)[^;]*;/\1/' file

出力:

gi_1    Pink;Blue;Beige;Yellow;Orange;Red;Green irish
gi_2    Black;White;Beige;Brown;Cyan;Purple;Red pepper

  • \(.*\t\)- 最初の部分に必要な部分をキャプチャします。

おすすめ記事