Método para colar uma coluna específica quando estiver no terminal

Método para colar uma coluna específica quando estiver no terminal

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 awkou sedqualquer perlcoisa disponível no sistema POSIX comum é uma opção, mas ainda não descobri isso. Também não tive sorte com o pastecomando e estou chegando à conclusão de pasteque 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, cutnã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.

informação relacionada