This is a test version of Biostars. For the public version, visit https://www.biostars.org.
extracting last word in [ ]

I have a file with description of transcript with organism:

XP 020275132.1 nodal modulator 3 [Asparagus officinalis]
XP 008781144.1 nodal modulator 1 [Phoenix dactylifera]

I want to extract the organism name wich is present at the last in [] brackets.

sed grep linux terminal

output:

$ grep -Po '(?<= \[).*(?=])' test.txt
Vitis vinifera
Musa acuminata subsp. malaccensis

$ sed 's/.*\s\[\(.*\)\]$/\1/g' test.txt
Vitis vinifera
Musa acuminata subsp. malaccensis

input:

 $ cat test.txt 
XP 003635378.1 PREDICTED: stearoyl-[acyl-carrier-protein] 9-desaturase, chloroplastic [Vitis vinifera]
XP 009411852.1 PREDICTED: stearoyl-[acyl-carrier-protein] 9-desaturase, chloroplastic-like isoform X2 [Musa acuminata subsp. malaccensis]

1 answer

rev your.file | awk -F "[" '{gsub("]", "");print $1 | "rev"}'

I highly recommend spending time to learn these file manipulation strategies yourself, as you will encounter this frequently in your career.

Thankyou ATpoint ,

but my file is having these kind of entries:

XP 003635378.1 PREDICTED: stearoyl-[acyl-carrier-protein] 9-desaturase, chloroplastic [Vitis vinifera]
XP 009411852.1 PREDICTED: stearoyl-[acyl-carrier-protein] 9-desaturase, chloroplastic-like isoform X2 [Musa acuminata subsp. malaccensis]

so along with organism it is taking protein name also.

edited my answer

Log in to answer this question.