Видалити все у другому стовпці, а не в дужках


2

У мене є файл, який виглядає приблизно так:

gene ID              protein
Solyc06g062540    (Z) PYROPHOSPHATASE 3 (PTHR20889:SF0)
Solyc10g075050    ALBUMIN SUPERFAMILY (PTHR33076:SF11)
Solyc07g061760    SUBFAMILY (PTHR24177:SF35)

Файл розміщений на вкладках; існує вкладка між першим стовпцем (ідентифікатор гена) та другим стовпцем (назва білка). (Назва білка може містити пробіли, але не вкладки.) Ім'я білка містить рядок у дужках, наприклад (PTHR33076:SF11),; це ідентифікатор білка . Я хочу зберегти перший стовпець і видалити все, що знаходиться у другому стовпці, крім ідентифікатора білка (та його дужок, що додаються). Таким чином, результат виглядатиме так:

Solyc06g062540    (PTHR20889:SF0)
Solyc10g075050    (PTHR33076:SF11)
Solyc07g061760    (PTHR24177:SF35)

Як я можу це зробити? Я позначив усі ідентифікатори в круглих дужках за допомогою функції «позначити» та ввівши (\w+\d+:\w+\d+)для виділення всіх ідентифікаторів у дужках, але не можу цим маніпулювати. Як зауваження, деякі назви білків мають інші скобкові рядки (наприклад, дивіться перший рядок, де міститься ім'я білка (Z), а також значення, яке я хочу). Я не хочу їх зберігати.

Відповіді:


1

Це можна зробити за допомогою пошуку та заміни звичайних виразів. Натисніть Ctrl+, Hщоб відкрити діалогове вікно Замінити. Переконайтесь, що режим пошуку є Regular Expression.

Знайти що:

(^[^\t\r\n]+\t)[^\t\r\n]+(\(\w+\d+:\w+\d+\))[^\t\r\n]*

Замінити:

\1\2

Пояснення шаблону:

[^\t\r\n]+- це будь-який рядок символів, який не містить вкладки, нової лінії чи повернення каретки. Це має відповідати лише тексту в одному стовпці вашого файлу.

^[^\t\r\n]+відповідає вмісту першого стовпця, оскільки ведучий ^обмежує збіг до початку рядка.

Перша група захоплення (^[^\t\r\n]+\t)відповідає вмісту першого поля та наступної вкладки.

[^\t\r\n]+(\(\w+\d+:\w+\d+\))[^\t\r\n]* відповідає вмісту другого поля і відповідає лише в тому випадку, якщо є вираз у дужках.

Друга група захоплення (\(\w+\d+:\w+\d+\))відповідає дужці виразу.

Шаблон заміни \1\2повертає першу та другу групи захоплення. Це ефективно видаляє оточуючий текст у другому полі, оскільки ця частина збігу не входить до групи захоплення.


Це спрацьовувало як вигадливий шарм. Я щойно почав використовувати блокнот ++, можливо, годину тому, і я не можу повірити, наскільки потужним він може бути при редагуванні тексту. Дякую за допомогу!
kevluv93

0

Якщо ідентифікатор білка (в скобках) завжди є останнім у рядку (як ви показали), він повинен бути досить хорошим для пошуку \t.*( (або можливо \t[^\r\n]*() та заміни його \t(.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.