![기존 문자열의 색인을 늘리는 방법은 무엇입니까?](https://linux55.com/image/13483/%EA%B8%B0%EC%A1%B4%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%98%20%EC%83%89%EC%9D%B8%EC%9D%84%20%EB%8A%98%EB%A6%AC%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음과 같은 문자열 값이 있고 아래와 같이 문자열의 인덱스를 증가시키고 싶습니다.
{
"name": "poc_param_model_001",
"type": "DOUBLE",
"role": "MEASURE",
"seq": 1
}
이것이 내가 하고 싶은 일이다.
{
"name": "poc_param_model_002",
"type": "DOUBLE",
"role": "MEASURE",
"seq": 2
}
{
"name": "poc_param_model_003",
"type": "DOUBLE",
"role": "MEASURE",
"seq": 3
}
{
"name": "poc_param_model_004",
"type": "DOUBLE",
"role": "MEASURE",
"seq": 4
}
....
{
"name": "poc_param_model_099",
"type": "DOUBLE",
"role": "MEASURE",
"seq": 99
}
이 시나리오를 구현하는 방법은 무엇입니까?
답변1
데이터가 data.txt에 저장되어 있다고 가정하면 다음을 사용할 수 있습니다.
while IFS= read -r line
do
if grep -q "^ *\"seq\" *: *[^ ]\+ *\$" <<< "$line"; then
prefix=$(sed -E "s/^( *\"seq\" *: *)[^ ]+ *\$/\1/" <<< "$line" )
number=$(sed -E "s/^ *\"seq\" *: *([^ ]+) *\$/\1/" <<< "$line" )
suffix=$(sed -E "s/^ *\"seq\" *: *[^ ]+( *)\$/\1/" <<< "$line" )
echo "$prefix$((++number))$suffix"
else
echo "$line"
fi
done < data.txt
스크립트는 모든 데이터를 읽고 "seq"를 찾아 그 뒤에 오는 숫자를 증가시킵니다.