2013-10-25 1 views
3

문자열에서 쉼표로 구분 된 13 개의 필드로 필드를 대체하려고합니다. 나는 대체하려는 위치와 분리 된 변수에서 그 위치에주고 싶은 새로운 가치를 가지고 있습니다. bash 사용하기.AWK : 변수에서 위치와 새 값이 주어진 문자열에서 필드를 대체하십시오.

#Original string: 
THR=’0,0,0,0,0,0,0,0,0,0,0,0,0’ 
#Position I want to manipulate: 
pos=’3’ 
#Value I want to write in the field "pos" 
val=’8.73’ 

# What I'm trying to do: 
echo $THR | awk -v chawk=$pos -v thrawk=$val -F',' '{ print; $chawk=$thrawk; print }' 

THR은 '0,0,8.73,0000000000'

건배

답변

2

당신은 그것을 거의 가지고 있어야한다 변수 THR

THR=0,0,0,0,0,0,0,0,0,0,0,0,0 
THR=$(awk -v chawk=$pos -v thrawk=$val -F',' '{ $chawk=thrawk; print }' OFS=\. <<< $THR) 
echo $THR 
0.0.8.73.0.0.0.0.0.0.0.0.0.0 
로 복원하려면 $thrawk

awk -v chawk=$pos -v thrawk=$val -F',' '{ print; $chawk=thrawk; print }' OFS=\. <<< $THR 
0,0,0,0,0,0,0,0,0,0,0,0,0 
0.0.8.73.0.0.0.0.0.0.0.0.0.0 

$ 뿅를 제거

+0

먼저 도움을 주셔서 감사합니다. 내가 마지막에 사용한 코드를 지정하고 싶습니다 (ASH가 있고 BASH가 아니고 <<<가 오류를 생성하는 BusyBux에서 실행되는 스크립트가 필요했기 때문에). __echo $ THR | awk -v chawk = $ pos -v thrawk = $ val -F ',' '{$ chawk = thrawk; print} 'OFS = \, __ – EnriqueH

관련 문제