
이 모든 내용은 다음과 같은 경우에 작성됩니다.
사례 1:
echo "${name}:${identity}:${hp}:$now:"0"" >> info.txt # write to info.txt
그래서 나는 다음과 같은 것을 가질 것입니다 :Tom:8:987654:commission:0 # i assign it to 0 first
사례 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
내 텍스트 파일은 다음과 같습니다
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:0
Fan:5:2132131:salaried:0
마지막 열 값을 $pay로 바꾸려고 합니다(모든 열이 아니라 사용자의 특정 이름만 표시됨). $pay는 10이고 $name은 Tommy라고 가정하겠습니다.
예상되는 텍스트 파일은 다음과 같습니다.
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:10
Fan:5:2132131:salaried:0
그런데 이런 오류가 발생했어요: sed: -e expression #1, char 15: unknown option to
s'`
나는 우분투 터미널에서 일하고 있습니다.
답변1
전체 줄을 교체하십시오.
sed -e "/$name/s/[0-9]*$/$pay/" -i info.txt