-
Usando
awk
, imprimindo o primeiro e o último campo com\n
como delimitador:awk '{printf "%s\n%s\n", , $NF}' file.txt
-
Usando
sed
, capturando o primeiro e o último campo ao corresponder e usar em substituição:sed -E 's/([^[:blank:]]+).*[[:blank:]]([^[:blank:]]+)$/\n/' file.txt
-
Com
perl
, lógica semelhante ased
:perl -pe 's/^([^\s]+).*\s([^\s]+)/\n/' file.txt
-
Usando
bash
, abordagem mais lenta , criando uma matriz de cada linha e imprimindo o primeiro e último elemento da matriz, separando-os por\n
:while read -ra line; do printf '%s\n%s\n' "${line[0]}" \ "${line[$((${#line[@]]}-1))]}"; done <file.txt
-
Com
python
, criando uma lista contendo elementos separados por espaços em branco de cada linha e, em seguida, imprimindo o primeiro e o último elemento da lista, separando por\n
:#!/usr/bin/env python3 with open("file.txt") as f: for line in f: line = line.split() print(line[0]+'\n'+line[-1])
Exemplo:
$ cat file.txt
UniRef90_Q8YC41 Putative binding protein BMEII0691 MNRFIAFFRSVFLIGLVATAFGRACA
UniRef90_Q8YC41 Putative binding protein BMEII0691 MNRFIAFFRSVFLIGLVATAFGRACA
$ awk '{printf "%s\n%s\n", , $NF}' file.txt
UniRef90_Q8YC41
MNRFIAFFRSVFLIGLVATAFGRACA
UniRef90_Q8YC41
MNRFIAFFRSVFLIGLVATAFGRACA
$ sed -E 's/([^[:blank:]]+).*[[:blank:]]([^[:blank:]]+)$/\n/' file.txt
UniRef90_Q8YC41
MNRFIAFFRSVFLIGLVATAFGRACA
UniRef90_Q8YC41
MNRFIAFFRSVFLIGLVATAFGRACA
$ perl -pe 's/^([^\s]+).*\s([^\s]+)/\n/' file.txt
UniRef90_Q8YC41
MNRFIAFFRSVFLIGLVATAFGRACA
UniRef90_Q8YC41
MNRFIAFFRSVFLIGLVATAFGRACA
$ while read -ra line; do printf '%s\n%s\n' "${line[0]}" "${line[$((${#line[@]]}-1))]}"; done <file.txt
UniRef90_Q8YC41
MNRFIAFFRSVFLIGLVATAFGRACA
UniRef90_Q8YC41
MNRFIAFFRSVFLIGLVATAFGRACA
>>> with open("file.txt") as f:
... for line in f:
... line = line.split()
... print(line[0]+'\n'+line[-1])
...
UniRef90_Q8YC41
MNRFIAFFRSVFLIGLVATAFGRACA
UniRef90_Q8YC41
MNRFIAFFRSVFLIGLVATAFGRACA