grep mudança de linha seguida por uma variável

2

Eu tenho um arquivo com o seguinte formato (com '-' servindo como delimitadores), e quero encontrar a aparência de um número apenas quando ele segue um delimitador. Eu suponho que seja uma concatenação de grep '- \ n' e $ number, mas não consigo encontrar o caminho certo. obrigado ..

1400
2
132
342
-
76567
1
1234
-
87
2
1400
54
-
    
por user24991 16.03.2014 / 13:49

5 respostas

5

Para encontrar uma variável antes do delimitador:

Usando awk :

$ awk '/!!!!!!!!!!!/{print num}{num=$0}' inputFile
342
1234
54

ou gnu-awk :

$ gawk 'NF && $0=$NF' RS='[!]+'  inputFile
342
1234
54

Para encontrar uma variável após o delimitador:

Usando awk :

$ awk '/!!!!!!!!!!!/{if(getline) print $0}' inputFile
76567
87

ou gnu-awk :

$ gawk 'NR>1 && $0=$1' RS='[!]+'  inputFile
76567
87
    
por 16.03.2014 / 14:07
1

O seguinte comando

grep '!!' -A 1 file|grep -vE '!!|\-\-'

produzirá

76567
87
    
por 16.03.2014 / 14:09
1

O grep tem um interruptor -A que diz para imprimir um número de linhas depois da partida. Neste caso, basta usar -A 1 e você vai ter como "

!!!!!!!!!!!
76567
--
!!!!!!!!!!!
87
--
!!!!!!!!!!!

Agora, basta exibir os números com | grep -e '[0-9]' .

    
por 16.03.2014 / 14:10
1

usando o AWK

Para encontrar uma variável antes do delimitador:

awk '{ print $NF }' RS='!!!!!!!!!!!'  infile

Resultado

342
1234
54

Para encontrar uma variável após o delimitador:

awk 'NR>1{ print $1 }' RS='!!!!!!!!!!!'  infile

Resultado

76567
87
    
por 16.03.2014 / 14:16
0

Isso faz um número antes de um delimitador:

sed -n '/[^0-9]/!h;/^-$/{g;/./p}'

E isso depois:

sed -n '/^-$/{n;/./!d;/[^0-9]/!p}'
    
por 18.06.2014 / 00:04

Tags