erro ao substituir várias palavras em linha usando sed

1

Estou usando o script abaixo para substituir uma lista de palavras em um arquivo.

No entanto, estou recebendo este erro ao executar o script:

can't read s/@@/AU/g: No such file or directory

Por favor, deixe-me saber o problema no script?

# source the properties:
. config.properties

######## Generating test data on runtime  ###############
echo "**************************************************************************"
echo "         Test Data Generation for Markets        ..                      *"
echo "**************************************************************************"
IFS="," read -ra items <<<"$markets"

for item in "${items[@]}"
do
    Country='echo $item|tr [a-z] [A-Z]'
    date1=$(date --date="20 day ago" +"%Y-%m-%d %H:%M")
    date2=$(date --date="400 day ago" +"%Y-%m-%d %H:%M")
    epoch1=$(date --date="20 day ago" +%s)
    epoch2=$(date --date="40 day ago" +%s)

    cp Sample_testdata testdata_$UPPER_CASE
    sed -i "s/@@/${Country}/g"  -e "s/date-20/${date1}/g" -e "s/date-400/${date2}/g" -e "s/epoch_date-20/${epoch1}/g" -e "s/epoch_date-40/${epoch2}/g" testdata_$UPPER_CASE

    echo "test data generation completed for Market :: $Country"

done
    
por Vishal Patial 24.02.2017 / 12:31

1 resposta

4

Ao usar vários -e bits com sed , certifique-se de que todas as partes sejam prefixadas com -e , incluindo a primeira:

sed -e ... -e ... -e ... -e ...

e não

sed ... -e ... -e ... -e ...

Como alternativa, você pode usar uma (e apenas uma)% expressãosed, caso em que você pode omitir o -e e usar ; ou novas linhas para separar os comandos nessa expressão:

sed -i "s/@@/${Country}/g; s/date-20/${date1}/g; ..." file

Ou

sed -i "
  s/@@/${Country}/g
  s/date-20/${date1}/g
  ..." file
    
por 24.02.2017 / 12:39

Tags