
여러 줄의 텍스트가 포함된 파일이 있습니다. "
따옴표 문자를 모두 제거해야 합니다 . 그러나 두 경계 사이에 있는 경우에만 제거하고 싶습니다.
예를 들어 샘플 라인은 다음과 같습니다.
"status":0,"text":"some stuff goes in here. and some more "here","user":"1234"
아래쪽 경계는 "text":"
이고 위쪽 경계는 입니다.","user"
따라서 위 줄에서는 "
하나만 제거됩니다("here"라는 단어 앞).
제거하는 방법에 대한 많은 예를 보았습니다.모든 것두 국경 사이에 있지만 더 표적화된 것을 찾을 수 없었습니다. 이 질문을 여러 번 받았을 거라 생각합니다(죄송합니다). 답을 찾을 수 없는 것 같으니 누구든지 올바른 방향을 알려주시면 감사하겠습니다.
답변1
우리는 함께 sed
할 수 있습니다:
sed -E ':a s/("text":"[^"]*)"(.*)(","user")/\1\2\3/;ta' infile
- 캡처된 첫 번째 그룹에는
"text":"
큰따옴표를 제외한 모든 문자가 포함됩니다.[^"]*
- 작은따옴표가 처음으로 나타나는 경우
- 두 번째 캡처 그룹에는 위 항목 이후의 모든 항목이 포함됩니다.
(.*)
- 세 번째로 포획된 그룹은
","user"
. :a s/find/replace/; ta
a
교체가 성공하면 태그로 이동합니다. 각 반복에서 발견된 작은따옴표를 제거"
하고 다른 모든 항목(캡처된 세 그룹)을 반환합니다.