Я хочу использовать команду 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
Если вы знаете, как заменить его, пожалуйста, скажите мне, спасибо.
После вставки > и некоторые \n становятся невидимыми.
например:> тРНК-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
поэтому используйте форматирование кода. Обновите сайт, я пытался переформатировать ваш пост.
Если вы хотите соответствовать (
, не избегайте этого.
sed -i 's/(.*).*[0-9]$//g' tRNA.fa
Но на самом деле следующего достаточно, чтобы удалить все после (
:
sed -i 's/(.*//' tRNA.fa
Обратите внимание, что вы также можете s/ (.*//
удалить это пространство перед (
.
\(...\)
используется для группировки выражения в подгруппу. Чаще всего он используется для обратных ссылок, но также может использоваться, например, как \(abc\)*
— будет искать ноль или более вхождений строки "abc"
.
Здесь — отличное введение в sed.
Спасибо, но я пробовал это sed -i 's/(.*//' tRNA.fa
. Просто удалил (), не удалил строку.
"строка" - какая строка? ... Не могу повторить, работает.
используйте sed -i 's/(.*//' tRNA.fa
, я получаю >тРНК-Ala-AGC-1-1 IItna5-AlaAGC II:4565386-4565457 Ala AGC 72 п.н. S: 724
Да,sed -i 's/(.*//' tRNA.fa
, по ссылке получилось, а по терминалу не получилось. Тем не менее,sed -i 's/(.*).*[0-9]$//g' tRNA.fa
, успешно в терминале, спасибо!
Хм, возможно у вас другая версия sed, и ваша совпадает с последней (
, а не с первой (
. Вероятно, добавление флага g
в конец может решить проблему. Или вы могли бы rev | sed 's/.*(//' | rev
в качестве последнего стенда. Удачи.
delete some specific strings
- так какой? Вы не уточнили.