Altera nomes em uma coluna no bash

1

Eu tenho um arquivo separado por tabulação no Linux que se parece com isso

~$ head list.tab
"x"
"1" "FUHGF.jnf.m22-1"
"2" "HDFHFEY.gfs.d2-1"
"3" "KJFGJF.fr.md2-1"
"4" "SDFSDIB.gfd.rtl2-1"
"5" "FGJFGOB.hgd.k2-5"
"6" "HJLHEH.fc.po2-1"
"7" "GFHFGV.gfn.col2-1"
"8" "KLAA.ghn.xil2-3"
"9" "KJGGFG.hgr.col2-2"

Gostaria de manter apenas a primeira parte do nome da segunda coluna. Eu sei que terei que usar cut e sed , mas não consigo pensar na estrutura do comando. Minha saída desejada é

~$ head list.tab

"FUHGF"
"HDFHFEY
"KJFGJF"
"SDFSDIB"
"FGJFGOB"
"HJLHEH"
"GFHFGV"
"KLAA"
"KJGGFG"

Eu tenho tentado com awk e gsub , mas eu não uso o Linux há algum tempo, a ajuda seria apreciada.

Muito obrigado

    
por Error404 12.08.2013 / 17:49

2 respostas

4

cut -sf2 -d' ' list.tab|sed -e 's/\..*/\"/'

significando

  1. recorte apenas o segundo campo em linhas com separadores (espaço)
  2. substitua o ponto e qualquer coisa que se segue com aspas.
por 12.08.2013 / 17:58
2

awk '$2 {oFS=FS; FS="."; $0=$2; print $1"\""; FS=oFS}' input

Para todas as linhas que têm um segundo campo:

  • salve o valor atual do FS
  • definir FS para.
  • forçar o awk a dividir novamente o segundo campo no novo FS
  • imprime o primeiro campo (e as aspas à direita)
  • defina o FS de volta ao seu valor original
por 12.08.2013 / 20:21

Tags