반복 없이 텍스트 자르기

반복 없이 텍스트 자르기

입력(변수 $VAR 형식):

'yoo' : x'yoo' 'welcome' : x'welcome' 'we' : x'we' 'dum' : x'dum' 'test' : x'test' 'poo' : x'poo' 'D2-dog' : x'D2-dog' 'ant' : x'ant' 'rat' : x'rat' 'xmass' : x'xmass'

나는 출력을 다음과 같이 원한다:

yoo welcome we dum test poo D2-dog ant rat xmass

나는 출력이 다음과 같기를 원하지 않습니다.

yoo
welcome
we
dum
test
poo
D2-dog
ant
rat
xmass

시도해 보았지만 echo $VAR | sed "s/' : x'//g" 혼란스럽고 예상했던 것과 다릅니다.

cutor tr또는 을 사용할 수 있나요 sed?

Alex의 답변 후 편집: 다른 텍스트에 문제가 있습니다.

echo "'yoo' : x'yoo' 'welcome' : x'welcome' 'we' : x'we' 'test' : x'test' 'poo' : x'poo' 'dog' : x'dog' 'ant' : x'ant' 'rat' : x'rat' 'xmass' : x'xmass' 'exp' : x'exp' 'S-123': x'S-123' 'demo': x'demo' 'neu': x'neu'" | sed -e "s/'\([^']*\)' : x'\1'/\1/g"

내가 얻는 결과는 다음과 같습니다.

yoo welcome we test poo dog ant rat xmass exp 'S-123': x'S-123' 'demo': x'demo' 'neu': x'neu'

이상해, 문제를 알아낼 수가 없어!

답변1

sed -e "s/'\([^']*\)' \?: x'\1'/\1/g"

다음과 같이 실행하세요:

$ MYVAR="'yoo' : x'yoo' 'welcome' : x'welcome' 'we' : x'we' 'dum' : x'dum' 'test' : x'test' 'poo' : x'poo' 'D2-dog' : x'D2-dog' 'ant' : x'ant' 'rat' : x'rat' 'xmass' : x'xmass'"
$ echo "$MYVAR" | sed -e "s/'\([^']*\)' \?: x'\1'/\1/g"
yoo welcome we dum test poo D2-dog ant rat xmass

\X이는 역참조가 확장 검색 패턴의 일부로 나타날 수도 있기 때문에 가능합니다 .

편집: RexExp를 변경하여 콜론 앞의 공백을 선택 사항으로 만들었습니다.

관련 정보