여기에 몇 가지 문제가 있습니다. 첫째, 네, 따옴표로 묶지 않으므로 공백은 sed
입니다. 그런 다음 g}/
에 구문 오류가 있습니다. 예를 들어
s/original/replacement/options
: 대체 연산자의 구문은
s/foo/bar/g
하지만 당신은 사용 :
s/foo/bar/g"}/
어떤 경우에는, 당신은 마지막 줄에 여러 }
이없는 경우 파일의 크기가 g
인 것은 의미가 없습니다.
그래서, 당신이 실제로 무엇을하려고에 따라, 당신이 중 하나 (UI는 교체 원본 파일 수정하기 위해, 출력을 보여 다시 추가 할 수 -i
를 제거한) 원하는 :
$ cat file
foo
bar}
$ sed '$s/}/,\n"filename":"'"$var\"\}/" file
foo
bar,
"filename":"abc cde fgh ijk"}
을
:
또는 물론
$ cat file
foo
bar}}}
$ sed '$s/}/,\n"filename":"'"$var\"\}/g" file
foo
bar,
"filename":"abc cde fgh ijk"},
"filename":"abc cde fgh ijk"},
"filename":"abc cde fgh ijk"}
는 훨씬 간단 접근 방식은 전체 목표 교체, 시세 및 모든를 개최
var
를 설정하는 것입니다
큰 따옴표를 사용 했으므로 sed
표현의 $
을 이스케이프 처리해야합니다.
입력 내용에'}'이 없으므로's /}/... '이 (가) 무엇을 할 것으로 기대합니까? 실제 데이터가 실제로 우리에게 보여준 샘플처럼 보이지 않는 것처럼 느껴질 때 명확하고 더 정확한 대표 샘플 입력 및 예상 출력을 제공하는 질문. –
JSON 값을 수정하려면'sed '를 빼고'jq'와 같은 도구를 사용하십시오. 답장을 보내 주셔서 감사합니다. – chepner