
나는 이것을 가지고있다 :
sed -e "/$name/s/[0-9]\:*$/$P/" -i sales_info.txt
위의 내용을 사용하여 이것을 변경할 때 : 내 텍스트 파일 형식이름:아니요:아니요:유형:p
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:0
Fan:5:2132131:salaried:0
$name = Tom , $P = 55.5라고 가정
나는 이것을 얻습니다 :
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:55.5
Fan:5:2132131:salaried:0
하지만 $P를 55.5에서 41.5로 변경하려고 하면
그것은 된다
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:55.41.5
Fan:5:2132131:salaried:0
나는 시도했다 :
sed -e "/$name/s/\:[0-9]*$/\:$P/" -i sales_info.txt
값 :0
이 0 보다 크면 전혀 변경되지 않습니다. 내가 이것을 위해 sed를 사용해야 한다고 가정합니다. 내가 :
엉뚱한 위치에 놓았나 ? 이후 마지막 열 값을 변경하려고 합니다.:
답변1
AFAIK : 여기서 이스케이프할 필요가 없습니다. 그러나 이후 . [0-9] 범위에 있지 않으면 [0-9]* 패턴은 55.5와 같은 소수와 일치하지 않습니다. [0-9.]*와 같은 것이 필요합니다. 즉 "/$name/s/: [0-9.]*$/:$P/"