Eu tenho um arquivo (arquivo de padrão) que gostaria de alimentar grep via -f
e gostaria de encontrar correspondências em outro arquivo (arquivo de pesquisa) onde uma string começa com esse padrão específico. Por exemplo:
PATTERN_FILE
1234
qwerty
chicken
SEARCH_FILE
12345
543212345
qwerty
1fwf32sgww
chicken fingers
Dados os arquivos acima, grep deve retornar as seguintes linhas
12345
qwerty
chicken fingers
Como eu faria isso?
Você pode acrescentar
^
todas as linhasPATERN_FILE
para passar paragrep -f
:Ou
sed 's/^/^/' PATTERN_FILE
em vez depaste
.Agora, se as linhas
PATTERN_FILE
forem strings fixas em vez de expressões regulares básicas, você também precisará escapar de todos os operadores regex:Uma opção para fazer isso seria modificar primeiro o arquivo de padrões, usando um comando como o seguinte para adicionar um
^
caractere ao início de cada linha. Isso instruiria o grep via regex a corresponder apenas no início da linha.No entanto, isso modifica o arquivo padrão, e eu preferiria uma solução que não alterasse a lista original