Como imprimir linhas se dois campos tiverem valores idênticos?

1

Sou novo no unix, tenho uma dúvida sobre o subconjunto de dados, gostaria de receber ajuda de alguém. Eu tenho 23G arquivo de entrada contendo milhões de linhas, mas eu quero manter apenas as linhas onde a primeira e quarta coluna são idênticas (nomes de andaimes). aqui estão as primeiras linhas do meu conjunto de dados:

tscaffold94_798049_802097   999 NA tscaffold94_798049_802097   999 NA 1
tscaffold94_798049_802097   999 NA tscaffold94_798049_802097  1029 NA 1
tscaffold94_798049_802097   999 NA tscaffold94_798049_802097  1044 NA -0.0463767871013283
tscaffold94_798049_802097   999 NA tscaffold94_798049_802097  1045 NA -0.939576278422824
tscaffold94_798049_802097   999 NA tscaffold94_798049_802097  1130 NA -0.0831304705346077
tscaffold94_798049_802097   999 NA tscaffold94_798049_802097  1180 NA -0.931681175211672
tscaffold94_798049_802097   999 NA tscaffold94_798049_802097  1187 NA -0.940010336852543
tscaffold94_798049_802097   999 NA tscaffold94_798049_802097  1202 NA 1
tscaffold94_798049_802097   999 NA tscaffold94_798049_802097  1224 NA 1
tscaffold94_798049_802097   999 NA tscaffold94_798049_802097  1269 NA 1
tscaffold94_798049_802097   999 NA tscaffold94_798049_802097  1313 NA -0.201478578143067
tscaffold94_798049_802097   999 NA tscaffold94_798049_802097  1384 NA 1
tscaffold94_798049_802097   999 NA tscaffold94_878564_884314  3259 NA -0.595441932439136
tscaffold94_798049_802097   999 NA tscaffold94_878564_884314  3304 NA 0.745699172241005
tscaffold94_798049_802097   999 NA tscaffold94_878564_884314  3319 NA -0.570318634275133
tscaffold94_798049_802097   999 NA tscaffold94_878564_884314  3588 NA -0.60363963711489
    
por Anna1364 15.02.2017 / 20:08

1 resposta

1

awk é seu amigo neste caso; as colunas se tornam variáveis no script awk e, portanto, é fácil verificar a equivalência (ou não) e executar uma ação como print (a linha atual está implícita)

awk '{if($1 == $4) print}' < input
    
por 15.02.2017 / 20:18