É apenas uma classe de caracteres , pois você não tem o sinal -r
definido como \(
e \)
fazem um grupo para referência posterior e \S
é apenas o grupo complementar para \s
, pois \s
é o grupo que corresponde a qualquer espaço em branco \S
é o grupo que corresponde a qualquer coisa que não seja branco espaço.
Isso significa que o regex s/\(\S\)/expect(/
adiciona expect(
na frente do primeiro espaço não branco:
# echo ' ' | sed "s/\(\S\)/expect(/"
# echo ' a' | sed "s/\(\S\)/expect(/"
expect(a
Então, acho que estou tentando dizer que seu script muda a linha:
ParallelTests.should_not_receive(:sleep)
Deve ser alterado:
# echo "ParallelTests.should_not_receive(:sleep)" | sed '/ *it.*do/! {
/\.should/ {
s/\.should/)\.to/
s/\(\S\)/expect(/
}
}'
expect(ParallelTests).to_not_receive(:sleep)