Eu uso o seguinte regex para encontrar endereços de e-mail:
echo "[email protected]" | awk '/^([a-zA-Z0-9_-.\+]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$/ {print $0}'
Mas retorna o erro:
awk: cmd. line:1: error : tent of \{\}
Eu uso o seguinte regex para encontrar endereços de e-mail:
echo "[email protected]" | awk '/^([a-zA-Z0-9_-.\+]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$/ {print $0}'
Mas retorna o erro:
awk: cmd. line:1: error : tent of \{\}
Eu quero usar o seguinte regex com awk para validar números de telefone:
echo 012-3456-7890 | awk '/^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$/ {print $0}'
Mas estou recebendo o seguinte erro:
awk: line 1: regular expression compile failed (missing operand)
Por que o seguinte comando imprime valores numéricos?
$ iostat | sed -n '/[:digit:]/!p'
1.56 1.38 0.31 0.34 0.03 96.38
É possível gerar números aleatórios reais com uma precisão específica e em um intervalo específico usando o Integer Random Generator $RANDOM? Por exemplo, como podemos gerar um número real com precisão 4 entre 0 e 1?
0.1234
0.0309
0.9001
0.0000
1.0000
Uma solução simples:
printf "%d04.%d04\n" $RANDOM $RANDOM
Podemos usar a sintaxe ${var##pattern}
e ${var%%pattern}
para extrair a última e a primeira seção de um endereço IPv4:
IP=109.96.77.15
echo IP: $IP
echo 'Extract the first section using ${var%%pattern}: ' ${IP%%.*}
echo 'Extract the last section using ${var##pattern}: ' ${IP##*.}
Como podemos extrair a segunda ou terceira seção de um endereço IPv4 usando a expansão de parâmetros?
Aqui está minha solução: eu uso um array e altero a variável IFS.
:~/bin$ IP=109.96.77.15
:~/bin$ IFS=. read -a ArrIP<<<"$IP"
:~/bin$ echo ${ArrIP[1]}
96
:~/bin$ printf "%s\n" "${ArrIP[@]}"
109
96
77
15
Também escrevi algumas soluções usando os comandos awk
, sed
e .cut
Agora, minha pergunta é: existe uma solução mais simples baseada na expansão de parâmetros que não use alteração de array e IFS?