2017-12-11 3 views
2

sed를 사용하여 키 값을 대체하지만 sed가 정규식과 제대로 일치하지 않는 것 같습니다. 일치해야하는 정규식 패턴과 일치하지 않는 Sed

sed -i "s/^(\ |\t)+\"emailBxUrl\"\:.*$/test/gm file1.json 

명령을 실행 한 후 파일이 변경되지 않은, 내가 가진 JSON은

... 
    "env": { 
     "emailBxUrl": "placeholder" 
    }, 
... 

을이 비슷하고 내가 가지고있는 SED 명령은 이것이다. 나는 regexr에서 정규식을 확인하고, 내가 의도 한대로 작동하지에 나오지도 명령을 누락하고있는 무슨 그래서

enter image description here

아래와 같이 그냥 벌금 "emailBxUrl ..."라인을 발견?

코멘트에 의해 제안
+2

온라인 사이트 근무 sed가 정규식의 BRE/ERE 풍미 만 지원하기 때문에 ... https://unix.stackexchange.com/questions/119905/why-does-my-regular-expression-work-in-x-but-not-in- y ... 이것은 GNU sed'sed 's/^ [\ t] \ + "emailBxUrl"에서 작동 할 수 있습니다. */test /''하지만 json의 경우에는 정규 표현식을 피하십시오. jq 또는 json 모듈이있는 python도 참조하십시오. http://mywiki.wooledge.org/Quotes – Sundeep

+1

sed 명령에 -E를 추가해야합니다. –

+0

확장 json을 게시하십시오. content – RomanPerekhrest

답변

1

, 정말 나오지도 사용하고 싶어 JQ를 사용하지만, 경우 누군가의 질문에 대답하기로 결정, 글렌 잭맨의 제안은 나오지도 작동하지 않습니다 나

sed -ri 's/^[[:blank:]]+"emailBxUrl":.*$/test/gm' file1.json 
관련 문제