grep para texto que pode ou não estar presente

1

Digamos que eu tenha um arquivo

batman;
robin;
superman;
password = "";
wonderwoman
green lantern

se eu quiser verificar se há um password presente, ou seja, algo foi inserido no "" . aqui está um exemplo para isso

ironman;
hulk;
spiderman;
password = "tonyStark";
black widow
hawkeye

Como eu verificaria se o arquivo tem uma senha entre o "" ?

Isso é o que eu tenho até agora

x=$(grep -icE "password=\"[a-zA-Z0-9]\"" file.txt)
if [ x -gt 0 ]; then
  echo "There is a password"
fi
    
por gkmohit 19.06.2014 / 21:01

5 respostas

3
if grep -q 'password = "[^"]' filename; then
    echo "password exists"
else
    echo "no password"
fi
    
por 19.06.2014 / 21:24
0

Eu inverteria grep "password=" "".

Se houver algo na senha diferente de vazio, o nome do arquivo e as linhas serão exibidos.

    
por 19.06.2014 / 21:11
0

Você perdeu os espaços em branco. Também negue a resposta para torná-lo mais confiável

x=$(grep -icE "password[ ]*=[ ]*\"\"" file.txt)
if [ $x -ne 1 ]; then
  echo "There is a password"
fi
    
por 19.06.2014 / 21:10
0

Através do awk e do grep,

awk -v var=$(grep -oP '(?<=^password = \")[^"]*' file) 'BEGIN{if (var=="") {print "There is no password"} else {print "There is a password"}}'

Você precisa executar o comando awk acima no diretório onde seu arquivo de entrada está localizado.

    
por 19.06.2014 / 21:23
0
c=$(grep -iE "password"  file.txt | cut -d "\"" -f2)

if [ -z "$c" ]; then 
    echo "no password"
fi

isso é bom? A saída é exatamente o que eu esperava.

    
por 19.06.2014 / 21:40