JSON을 업데이트할 때 sed 매개변수 목록이 너무 깁니다.

JSON을 업데이트할 때 sed 매개변수 목록이 너무 깁니다.

base64를 사용하여 업데이트해야 하는 JSON 속성이 있습니다. 프로세스는 다음과 같습니다.

prop_val=`base64 --wrap=0 < $prop_txt`
sed -i 's@"property_specific": ""@"property_specific": "'"${prop_val}"'"@g' $final_json

문제가 발생했습니다.line 22: /bin/sed: Argument list too long

Base64 문자열(한 줄)은 매우 깁니다. sed를 사용하지 않고 어떻게 속성을 업데이트할 수 있나요?

참고: 형식은 큰따옴표입니다.

고쳐 쓰다:

  • 큰따옴표의 복잡성을 제거하려면 자리 표시자 고유 문자열을 만드세요.
  • 시도했지만 sed -f작동하지 않았습니다.

시험을 마친:

     sed -i -f - $final_json << EOF; 's@placeHolder123456@'"${prop_val}"'@g'; EOF

실수:

line 27: warning: here-document at line 23 delimited by end-of-file (wanted `EOF')
line 28: syntax error: unexpected end of file

EOF오류를 피하기 위해 함수에 넣으려고 시도했지만 성공하지 못했습니다. 기능:

update_prop_specific() {
    sed -i -f - $1 << EOF
    s@placeHolder123456@$2@g
    EOF
}

제안?

답변1

결국 다른 파일을 설정하고 sed -i -f ....함수 및 명시적 호출로 인해 기본 스크립트에서 해당 파일을 호출하면unexpected EOF

관련 정보