Сед все перед символом второй трубы - PullRequest
0 голосов
/ 27 сентября 2019

Я просто хочу удалить все перед символом второй трубы (включая символ трубы) до знака больше, чем (оставив его).К сожалению, я новичок и не нашел в сети похожей проблемы.

например,

>ENA|FXSY01000001|FXSY01000001.1
AAAATCTTATTTTATTTTTTCCCTGTCGGCAGCAATTCATTCACCCCCTCACTTTTTAAT
ATTTTTAACTGCAAGATGAATAAAAATAAATTTTTCTCTCCACTCCATCATCCTGCTATA
TACATTTTTACTTTTTTTAATATTTTCCTTCCAATCATCACTACTTTATTTTTATTTCC
>ENA|FXSY01000001|FXSY01000002.1
AAAATCTTATTTTATTTTTTCCCTGTCGGCAGCAATTCATTCACCCCCTCACTTTTTAAT
ATTTTTAACTGCAAGATGAATAAAAATAAATTTTTCTCTCCACTCCATCATCCTGCTATA
TACATTTTTACTTTTTTTAATATTTTCCTTCCAATCATCACTACTTTATTTTTATTTCC
>ENA|FXSY01000001|FXSY01000003.1
AAAATCTTATTTTATTTTTTCCCTGTCGGCAGCAATTCATTCACCCCCTCACTTTTTAAT
ATTTTTAACTGCAAGATGAATAAAAATAAATTTTTCTCTCCACTCCATCATCCTGCTATA
TACATTTTTACTTTTTTTAATATTTTCCTTCCAATCATCACTACTTTATTTTTATTTCC

повторно отредактировать из @ VJC Новое требование для вывода:

>FXSY01000001.1
AAAATCTTATTTTATTTTTTCCCTGTCGGCAGCAATTCATTCACCCCCTCACTTTTTAAT
ATTTTTAACTGCAAGATGAATAAAAATAAATTTTTCTCTCCACTCCATCATCCTGCTATA
TACATTTTTACTTTTTTTAATATTTTCCTTCCAATCATCACTACTTTATTTTTATTTCC
>FXSY01000002.1
AAAATCTTATTTTATTTTTTCCCTGTCGGCAGCAATTCATTCACCCCCTCACTTTTTAAT
ATTTTTAACTGCAAGATGAATAAAAATAAATTTTTCTCTCCACTCCATCATCCTGCTATA
TACATTTTTACTTTTTTTAATATTTTCCTTCCAATCATCACTACTTTATTTTTATTTCC
>FXSY01000003.1
AAAATCTTATTTTATTTTTTCCCTGTCGGCAGCAATTCATTCACCCCCTCACTTTTTAAT
ATTTTTAACTGCAAGATGAATAAAAATAAATTTTTCTCTCCACTCCATCATCCTGCTATA
TACATTTTTACTTTTTTTAATATTTTCCTTCCAATCATCACTACTTTATTTTTATTTCC

с предложением Shellter'а он дал мне следующий вывод: awk -F\| '/^>/{print ">" $NF}1' file > newFile

>FXSY01000001.1
>ENA|FXSY01000001|FXSY01000001.1
AAAATCTTATTTTATTTTTTCCCTGTCGGCAGCAATTCATTCACCCCCTCACTTTTTAAT
ATTTTTAACTGCAAGATGAATAAAAATAAATTTTTCTCTCCACTCCATCATCCTGCTATA
TACATTTTTACTTTTTTTAATATTTTCCTTCCAATCATCACTACTTTATTTTTATTTCC
>FXSY01000002.1
>ENA|FXSY01000001|FXSY01000002.1
AAAATCTTATTTTATTTTTTCCCTGTCGGCAGCAATTCATTCACCCCCTCACTTTTTAAT
ATTTTTAACTGCAAGATGAATAAAAATAAATTTTTCTCTCCACTCCATCATCCTGCTATA
TACATTTTTACTTTTTTTAATATTTTCCTTCCAATCATCACTACTTTATTTTTATTTCC
>FXSY01000003.1
>ENA|FXSY01000001|FXSY01000003.1
AAAATCTTATTTTATTTTTTCCCTGTCGGCAGCAATTCATTCACCCCCTCACTTTTTAAT
ATTTTTAACTGCAAGATGAATAAAAATAAATTTTTCTCTCCACTCCATCATCCTGCTATA
TACATTTTTACTTTTTTTAATATTTTCCTTCCAATCATCACTACTTTATTTTTATTTCC

, но исправил это с помощью: sed '/^#/ d' < inputFile.txt > outputFile.txt

>FXSY01000001.1
AAAATCTTATTTTATTTTTTCCCTGTCGGCAGCAATTCATTCACCCCCTCACTTTTTAAT
ATTTTTAACTGCAAGATGAATAAAAATAAATTTTTCTCTCCACTCCATCATCCTGCTATA
TACATTTTTACTTTTTTTAATATTTTCCTTCCAATCATCACTACTTTATTTTTATTTCC
>FXSY01000002.1
AAAATCTTATTTTATTTTTTCCCTGTCGGCAGCAATTCATTCACCCCCTCACTTTTTAAT
ATTTTTAACTGCAAGATGAATAAAAATAAATTTTTCTCTCCACTCCATCATCCTGCTATA
TACATTTTTACTTTTTTTAATATTTTCCTTCCAATCATCACTACTTTATTTTTATTTCC
>FXSY01000003.1
AAAATCTTATTTTATTTTTTCCCTGTCGGCAGCAATTCATTCACCCCCTCACTTTTTAAT
ATTTTTAACTGCAAGATGAATAAAAATAAATTTTTCTCTCCACTCCATCATCCTGCTATA
TACATTTTTACTTTTTTTAATATTTTCCTTCCAATCATCACTACTTTATTTTTATTTCC

1 Ответ

1 голос
/ 27 сентября 2019

Не могли бы вы попробовать следующее.

sed 's/\([^|]*\)|\([^|]*\)|\(.*\)/\3/'  Input_file

Краткое объяснение: Использование концепции временного буфера sed, где мы можем сохранить сопоставленное регулярное выражение в памяти имогу дать им номера тоже.Здесь я сохранил все до 1-го вхождения | в 1-й указатель и все после 1-го вхождения | до следующего вхождения | во 2-ю позицию.Тогда держите все в третьем указателе.Позже подставляем всю строку с 3-м указателем согласно требованию.

...