ubuntu shell script do Linux alterando um valor de coluna de uma linha no textfile

0

Todos estes estão sendo escritos no caso:

Caso 1:

 echo "${name}:${identity}:${hp}:$now:"0"" >> info.txt      # write to info.txt

então eu terei algo assim: Tom:8:987654:commission:0 # i assign it to 0 first

Caso 2:

echo -n "Enter employee's name:"
read name

S='grep $name info.txt';    

    if test -z $S 
then
echo "No details with employee name  $name"
else
echo "$S" | cut -d: -f4 // display 4th column.
echo 
echo -n "Enter hourly wage: "; read wage;
echo -n "Enter hours worked this week: "; read hours;

pay=$hours-40*$wage;          

echo -n "To update next payroll : press Y else N to go main menu: "     

read option
case "$option" in 
[Yy]*)  echo "Payroll have been updated."
    echo grep $name | sed -i s/\:*$/$pay/n info.txt //error         
    ;;
[Nn]*) 
    echo "Press Enter to view the Main"     
esac
fi

Meu arquivo de texto é assim:

Tom:8:987654:commission:0
Tommy:7:12379813:hourly:0
Fan:5:2132131:salaried:0

Estou tentando substituir o último valor da coluna por $ pay (nem todas as colunas são apenas o nome específico do usuário) Vamos dizer que $ pay é 10 e $ name é Tommy

Este é o arquivo de texto esperado:

   Tom:8:987654:commission:0
    Tommy:7:12379813:hourly:10
    Fan:5:2132131:salaried:0

Mas recebi este erro: sed: -e expression #1, char 15: unknown option to s ''

eu estou fazendo no terminal ubuntu.

    
por what 03.11.2016 / 11:06

1 resposta

1

Substitua a linha inteira:

sed -e "/$name/s/[0-9]*$/$pay/" -i info.txt
    
por 03.11.2016 / 11:14