Eu quero usar um documento aqui para comandos sed e fornecer o arquivo a ser lido e o arquivo de saída.
Eu examinei o Here-Documents do guia Advanced Bash Scripting, mas ele não menciona nada sobre argumentos regulares no uso de um doc here. Isso é possível?
Eu gostaria de conseguir algo como o seguinte:
#!/bin/bash
OUT=/tmp/outfile.txt
IN=/my_in_file.txt
sed $IN << SED_SCRIPT
s/a/1/g
s/test/full/g
SED_SCRIPT
> $OUT;
Qualquer ajuda é realmente apreciada.
fonte
-f -
nosed
mas requer substituição processo:<( command )
.No caso de
sed
não suporta a leitura de um script a partir destdin
(usando-f -
), você pode usar substituição processo (disponível embash
,zsh
,ksh93
):O parêntese de fechamento
)
deve seguir o delimitador final (SEC_SCRIPT
) imediatamente ou após uma nova linha. No caso de substituição de processo, você também pode usar emecho
vez de um documento aqui:fonte
"$IN"
ou mesmotestfile.txt
) imediatamente após o próprio comando sed - queria um-e script
ou-f file
. Reorganizar a resposta de @pabouk funcionou para mim:sed -f <( cat << ETC ... ETC) "$IN" > "$OUT"
SED_SCRIPT
.Talvez uma abordagem melhor:
:)
fonte