2012-02-08 3 views
14

문자열을 와일드 카드로 바꾸고 싶지만 작동하지 않습니다.와일드 카드로 SED 사용

문자열은 "일부 문자열-8"

내가

sed -i 's/string-*/string-0/g' file.txt 

을 쓴 것처럼 보이지만 출력이

some-string-08 

답변

25

별표이다 (*) "제로 이상을 의미 이전 항목 ". 일치시킬 경우 임의의 문자열과 일치하는 (즉, 하나의 문자를 0 번 이상) 할 경우

단일 문자 그래서

sed -i 's/string-.*/string-0/g' file.txt 
+0

글쎄, 아마도 내 질문이 불완전했다. ... 당신의 명령은이 fien에서 작동합니다. 그러나'some-string-8 -x --command 명령 '을 사용하면 해당 명령을 실행 한 결과는'some-string-0'입니다. 그 후에 모든 문자가 삭제됩니다. 'some-string-0 -x -command acommand'를 원합니다. – mahmood

+0

첫 번째 명령은 무엇입니까? – mahmood

+0

대체 문자열에 와일드 카드를 사용하려면 어떻게해야합니까? 예 : 'AAA. * BBB'를 'CCC. * DDD'로 바꾸십시오. – user2561747

5

의 개념을 사용

sed -i 's/string-./string-0/g' file.txt 

를 사용 정규 표현식의 "와일드 카드"는 약간 다르게 작동합니다. "모든 문자"와 일치 시키려면 "."을 사용하십시오. "*"수정 기호는 여러 번 일치하는 것을 의미합니다.

관련 문제