다음과 같은 출력이 있습니다.
"vancouver/news/vancouver-voices": {
"status": 0,
"time": 0,
"timestamp": 1371298701
},
"vancouver/news/vancouvers-march-second-annual-success": {
"status": 0,
"time": 0,
"timestamp": 1371298701
}
부분 URL 만 추출해야합니다 ( vancouver/news/vancouvers-march-second-annual-success and vancouver/news/vancouver-voices
예 :
나는 기본적으로 bash를 통해 명령을 호출 한 다음 grep awk 또는 sed로 파이프합니다.
grep ( | grep -o '".*": {'
)을 사용 하면 가까이 갈 수 있습니다. 나는 다음과 같은 출력으로 끝납니다.
"vancouver/news/vancouver-voices": {
"vancouver/news/vancouvers-march-second-annual-success": {
그래도 sed 또는 awk를 사용해야한다고 생각합니다. 몇 가지를 시도했지만 특수 문자를 피해야한다고 생각합니다. 예를 들어 | awk '\"(.*)\": {' --output='$1
‘를 시도 했지만 백 슬래시 때문에 barfs입니다.
sed 또는 awk 전문가가 특수 문자를 올바르게 탈출하는 방법에 대한 단서가 있습니까?
답변
awk '/{/ {print $2}' FS='"'
결과
vancouver/news/vancouver-voices
vancouver/news/vancouvers-march-second-annual-success
답변
솔루션 sed
:
sed -n '/{/s="\([^"]*\)".*=\1=p'
grep
+ cut
:
grep '{' | cut -d'"' -f2
답변
여전히 grep을 사용할 수 있습니다 :
| grep -o '[^"/]\+\(/[^"/]\+\)\+'
수율 :
vancouver/news/vancouver-voices
vancouver/news/vancouvers-march-second-annual-success
비- “, 비 // 문자의 초기 문자열을 찾은 다음 슬래시와 이니셜과 동일한 유형의 문자열로 구성된 하나 이상의 시퀀스를 검색합니다. 또한 영숫자 + 대시 문자 클래스를 사용하여 URL 구성 요소를 선택하십시오.