Как заменить строку определенных символов командой sed

Я хочу использовать команду sed для удаления определенных строк.

Это файл (tRNA.fa):

>tRNA-Ala-AGC-1-1 (chrII.trna5-AlaAGC) chrII:4565386-4565457 (+) Ala (AGC) 72 bp Sc: 72.4
GGGGGTATAGCTCAGTGGTAGAGCGCTCCCTTAGCATGGGAGAGGgCTGGGGTTCAATTC
CCCATACCTCCA
>tRNA-Ala-AGC-1-10 (chrX.trna261-AlaAGC) chrX:7378738-7378809 (-) Ala (AGC) 72 bp Sc: 72.4
GGGGGTATAGCTCAGTGGTAGAGCGCTCCCTTAGCATGGGAGAGGgCTGGGGTTCAATTC
CCCATACCTCCA
>tRNA-Ala-AGC-1-11 (chrX.trna260-AlaAGC) chrX:7507245-7507316 (-) Ala (AGC) 72 bp Sc: 72.4
GGGGGTATAGCTCAGTGGTAGAGCGCTCCCTTAGCATGGGAGAGGgCTGGGGTTCAATTC
CCCATACCTCCA

Я просто хочу сохранить «> тРНК-XXX-XXX-X-X» и следующую строку.

Итак, я попытался заменить ненужную информацию командой sed:

sed -i 's/\(.*\).*[0-9]$//g' tRNA.fa

Однако я удалил всю строку, начинающуюся с «>».

Результат, который я надеюсь получить, таков:

>tRNA-Ala-AGC-1-1 
GGGGGTATAGCTCAGTGGTAGAGCGCTCCCTTAGCATGGGAGAGGgCTGGGGTTCAATTC
CCCATACCTCCA
>tRNA-Ala-AGC-1-10 
GGGGGTATAGCTCAGTGGTAGAGCGCTCCCTTAGCATGGGAGAGGgCTGGGGTTCAATTC
CCCATACCTCCA
>tRNA-Ala-AGC-1-11 
GGGGGTATAGCTCAGTGGTAGAGCGCTCCCTTAGCATGGGAGAGGgCTGGGGTTCAATTC
CCCATACCTCCA

Если вы знаете, как заменить его, пожалуйста, скажите мне, спасибо.

delete some specific strings - так какой? Вы не уточнили.
KamilCuk 30.05.2019 09:59

После вставки > и некоторые \n становятся невидимыми.

Katniss Dong 30.05.2019 10:03

например:> тРНК-Ala-AGC-1-1 IItna5-AlaAGC II:4565386-4565457 Ala AGC 72 п.н. S: 724 GGGGGTGGGTTCAATTC >тРНК-Ala-AGC-1-10 Xtna261-AlaAGC X:7378738-7378809 - Ala AGC 72 п.н. S: 724 GGGGGTATAGCTCAG

Katniss Dong 30.05.2019 10:04

поэтому используйте форматирование кода. Обновите сайт, я пытался переформатировать ваш пост.

KamilCuk 30.05.2019 10:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите соответствовать (, не избегайте этого.

sed -i 's/(.*).*[0-9]$//g' tRNA.fa

Но на самом деле следующего достаточно, чтобы удалить все после (:

sed -i 's/(.*//' tRNA.fa

Обратите внимание, что вы также можете s/ (.*// удалить это пространство перед (.

\(...\) используется для группировки выражения в подгруппу. Чаще всего он используется для обратных ссылок, но также может использоваться, например, как \(abc\)* — будет искать ноль или более вхождений строки "abc".

Здесь — отличное введение в sed.

Спасибо, но я пробовал это sed -i 's/(.*//' tRNA.fa. Просто удалил (), не удалил строку.

Katniss Dong 30.05.2019 10:10

"строка" - какая строка? ... Не могу повторить, работает.

KamilCuk 30.05.2019 10:11
>тРНК-Ala-AGC-1-1 (chrII.trna5-AlaAGC) chrII:4565386-4565457 (+) Ala (AGC) 72 п.н. Sc: 72,4, я хочу получить >тРНК-Ala-AGC-1-1
Katniss Dong 30.05.2019 10:14

используйте sed -i 's/(.*//' tRNA.fa, я получаю >тРНК-Ala-AGC-1-1 IItna5-AlaAGC II:4565386-4565457 Ala AGC 72 п.н. S: 724

Katniss Dong 30.05.2019 10:16

Да,sed -i 's/(.*//' tRNA.fa, по ссылке получилось, а по терминалу не получилось. Тем не менее,sed -i 's/(.*).*[0-9]$//g' tRNA.fa, успешно в терминале, спасибо!

Katniss Dong 30.05.2019 10:24

Хм, возможно у вас другая версия sed, и ваша совпадает с последней (, а не с первой (. Вероятно, добавление флага g в конец может решить проблему. Или вы могли бы rev | sed 's/.*(//' | rev в качестве последнего стенда. Удачи.

KamilCuk 30.05.2019 10:56

Другие вопросы по теме