지금 이 코드가 있어요
cat -n rfile | sed -n '/"semantic_url":"/,/","/p'
여기서 rfile은 많은 양의 텍스트를 포함하는 파일입니다. 나는 각각 사이의 모든 것을 추출하려고 노력하고 있습니다
"semantic_url":"
(큰따옴표와 마지막 큰따옴표를 포함하세요.)
다음 패턴은 이렇습니다.
","
내가 뭘 잘못하고 있는지 잘 모르겠습니다. 나는 오랫동안 맨페이지를 읽고 Google 검색을 하면서 이 작업을 해왔습니다. 내가 뭘 잘못했나요?
단지 이러한 패턴 사이에 무엇이 있는지 반환하도록 허용하지 않습니다. 그것은 나에게 모든 것을 돌려주었습니다.
예시를 입력하세요.
"semantic_url":"number1","thisorthat"semantic_url":"number2","somecode"semantic_url":"number3","somemorecode
출력 예
number1, number2, number3
답변1
sed -netP -e's/"semantic_url":"\([^"]*\)","/\n\1\n/;D' \
-e:P -e'P;D' <in >out
...문제에 대한 귀하의 설명을 이해한다면 여는 따옴표와 닫는 따옴표가 같은 줄에 있고 및 사이의 비트가 이중을 포함 "semantic_url":"
하지 않는 한 ","
구분된 문자열은 각 출력 줄뿐만 아니라 인쇄됩니다. 따옴표 한 쌍에서 발견된 각 쌍 사이의 모든 것.
출력 라인을 연결하려면 이에 대한 내용을 작성할 수 있지만 다른 것을 추가하는 것이 더 쉬울 수도 있습니다 sed
.
sed -netP -e's/"semantic_url":"\([^"]*\)","/\n \1\n/;D' \
-e:P -e'P;//!=;D' <in|\
sed -e'/^[^ ].*/!{H;d;}' \
-e's///;x;s/\n.//;s//,/g'
위의 입력을 다음과 같이 파이프했습니다.
"semantic_url":"number1","thisorthat"semantic_url":"number2","somecode"semantic_url":"number3","somemorecode
"semantic_url":"number4","thisorthat"semantic_url":"number5","somecode"semantic_url":"number6","somemorecode
"semantic_url":"number7","thisorthat"semantic_url":"number8","somecode"semantic_url":"number9","somemorecode
다음과 같이 인쇄되었습니다.
number1,number2,number3
number4,number5,number6
number7,number8,number9