입력(변수 $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"
혼란스럽고 예상했던 것과 다릅니다.
cut
or 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를 변경하여 콜론 앞의 공백을 선택 사항으로 만들었습니다.