buscando 1 linha acima e 1 linha abaixo de um número de linha

3

Estou tentando exibir algumas linhas de um arquivo. O que eu sei é algo assim:

head -n48964204 xag

Mas isso exibirá o número da linha conforme mencionado. o que estou tentando é buscar o registro para o número de linha 48964203,48964204,and 48964205.

Eu também tentei isso: sed -n 48964204p xag , mas isso exibe apenas uma única linha do arquivo.

    
por Jaffer Wilson 25.05.2017 / 10:41

3 respostas

5

Em sed , você especifica a primeira linha e a última linha que deseja, como esta

sed -n '48964203,48964205p' xag

desde que você saiba o número da linha, especifique o número anterior e o número subseqüente!

Explicação

  • -n fique quieto até pedirmos que você p digite algo
  • 2,7 a primeira linha que quero e a última linha que quero & amp; tudo no meio. Este é um endereço.
  • p imprime essas linhas
por Zanna 25.05.2017 / 10:47
3

Usando awk :

awk 'NR==48964203,NR==48964205' xag

Ele retornará as linhas 48964203 a 48964205 e incluirá as duas. Usando NR , podemos especificar os registros de entrada, então awk apenas imprime linhas especificadas para nós.

    
por Ravexina 25.05.2017 / 11:13
1

abordagem Perl:

perl -lne 'print if $.>=48964203 and $.<=48964205' input.txt

A idéia-chave é imprimir números de linhas que correspondem à expressão lógica - o número da linha é maior ou igual a 48964203 e o número da linha é menor ou igual a 48964205.

    
por Sergiy Kolodyazhnyy 03.06.2017 / 01:10