Gostaria de colar apenas a terceira coluna de dados do terminal.
Eu originalmente tenho algo como:
4 SF0086 SF0086
12 SF0087 SF0087
17 TSF141 TSF141
29 TSF070 TSF070
30 TSF028 TSF028
31 TSF122 TSF122
que eu copio e colo no terminal, ele fica em uma única linha
4 SF0086 SF0086 12 SF0087 SF0087 17 TSF141 TSF141 29 TSF070 TSF070 30 TSF028 TSF028 31 TSF122 TSF122
Eu gostaria de conseguir assim:
SF0086
SF0087
TSF141
TSF070
TSF028
TSF122
Posso salvar a opção de uma linha (meio) como um arquivo nesse ponto e usar algo como awk
ou sed
qualquer perl
coisa disponível no sistema POSIX comum é uma opção, mas ainda não descobri isso. Também não tive sorte com o paste
comando e estou chegando à conclusão de paste
que não conseguirei fazer isso por mim. Os dados mudam (o que significa que o espaçamento mudará) cada vez que preciso extrair a terceira coluna. Algum mestre em extração/formatação de dados por aí?
Responder1
'cut' é o comando que você está procurando. Você especifica qual delimitador usar (espaço em branco é o padrão, acredito) e qual coluna deseja. A página de manual listará todos os detalhes.
Você terá que certificar-se de que ele seja colado com as novas linhas intactas para que funcione corretamente.
Responder2
O que funcionou melhor para mim, como sempre terei duplicatas e a numeração (campos -f) sempre mudará, bem como o fato de minha lista poder ter centenas de campos, cut
não estava se mostrando uma opção válida.
Isto é o que produziu o que eu queria:
sed -e 's/\s\+/\n/g' data.txt > data_cr.txt && sort data_cr.txt | uniq -d > final.txt
Onde:
sed -e 's/\s\+/\n/g' data.txt > data_cr.txt
força todo o texto, separado por espaços, em sua própria linha e grava-o em um novo arquivo data_cr.txt...e
sort data_cr.txt | uniq -d > final.txt
pega os dados linha por linha e imprime apenas uma única cópia de todas as duplicatas.