piping grep regex no comando sed

0

Estou tentando criar um script que encontre / substitua instâncias de uma string correspondente:

vc/integer

O arquivo / etc / securetty contém as seguintes strings:

vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11



grep -E 'vc/(\d{0,4}\D)*' /etc/securetty | while read line; do sed -ie "s=$line==g" /etc/securetty; done

Como esperado, o comando acima remove todas as strings mencionadas, mas não retira o segundo dígito, o 0 e o 1, que fazem parte das últimas duas strings, vc / 1 0 vc / 1 1 . Estou com um arquivo contendo

0
1

Como posso modificar o comando para remover uma correspondência de dígito único e duplo?

    
por GreNIX 22.03.2017 / 17:37

1 resposta

4

Por que você não faz isso simplesmente?

sed -i -e 's|vc/[0-9]\{1,\}||g' /etc/security

Explicação:

A regex [0-9]\{1,\} = > 1 ou mais correspondências do átomo precedente, que no seu caso é [0-9] . Observe que \d+ , embora equivalente ao que eu dei a [0-9]\{1,\} , não é compatível com POSIX sed. Na mesma linha, observe que [0-9]\{0,\} é equivalente a \d* .

    
por 22.03.2017 / 17:49