列から文字の後のテキストを複数回削除します。

列から文字の後のテキストを複数回削除します。

そのため、ファイルの2番目と3番目の列に次のようにテキストを設定しました。

GO:0005634^cellular_component^nucleus`GO:0003677^molecular_function^DNA binding`  

すべての機能関連テキストを削除し、次のような出力を取得したいと思います。

GO:0005634`GO:0003677

この問題を解決するためにsedまたはawkを使用する方法がわかりません。

ノート:行の数が異なりますGO:xxxxxxx

ベストアンサー1

データがバックティックをレコード区切り文字として使用し、曲折文字をフィールド区切り文字として使用するようです。

printf 'GO:0005634^cellular_component^nucleus`GO:0003677^molecular_function^DNA binding`' |
awk -F '^' -v RS='`' -v ORS='`' '{ print $1 }'

これは各レコードの最初のフィールド(GO用語)のみを印刷し、バックティックを出力レコード区切り文字として使用します。

出力:

GO:0005634`GO:0003677`

(後行改行なし)

おすすめ記事