exemplo.txt
alias znm="base64"
alias asu="sed 's/.\{4\}/&™/g'"
alias mmk="sed 's/\(.\{4\}\)\™/\1/g'"
alias mmk="sed 's/\(.\{8\}\)\™/\1/g'"
Saída desejada:
alias asu="sed 's/.\{4\}/&™/g'"
Mas dá erro quando eu tentei isso
grep -wo "alias asu="sed 's/.\{4\}/&™/g'"" example.txt
Como fazê-lo corretamente?
Isso evita os problemas que você está tendo com as aspas e caracteres de expressão regular e passa o padrão como está
grep
na entrada padrão. Ogrep
utilitário lê o padrão da entrada padrão porque pedimos, com-f /dev/stdin
, para fazer isso (no Android, você pode usar-f /dev/fd/0
).O
-F
usa o padrão como uma string em vez de como uma expressão regular e-x
garante que apenas corresponda linhas que correspondam completamente ao padrão (como se o padrão estivesse ancorado no início e no fim da linha).Usando isso como um teste para saber se esse alias específico está no arquivo:
Seu comando,
está realmente chamando
grep
com um padrão e dois nomes de arquivo:"alias asu="sed
é o padrão (na verdade, uma expressão regular, já que você não usa-F
).'s/.\{4\}/&™/g'""
é o primeiro nome de arquivo, pois o shell quebrará a string no espaço sem aspas.example.txt
é o segundo nome de arquivo.Obviamente, você pode certificar-se de citar todos os caracteres especiais e aspas, mas usar um documento aqui é um pouco mais fácil, pois você não precisa modificar o padrão.