이거 왜 안 어울려..?
sed -e '/--Updated?[[:space:]]+Date/d' inputfile
이것..:
--Updated Date: 2013-11-06 15:32:13
d?
Update Date
때로는 , 때로는 을 가지고 있기 때문입니다 Updated Date
.
제거를 위해? 나도 그것을 시도했지만 \s
작동하지 않습니다.
답변1
이 매개변수를 사용해야 합니다 -r
. 사용해 보세요
sed -r '/--Updated?[[:space:]]+Date/d' inputfile
답변 업데이트
을 사용하면 sed '/something/d'
이에 일치하는 모든 행이 삭제됩니다.
-r
-매개변수 -r은 확장 정규식을 사용합니다.
표현식에는 2개의 정규 표현식이 있습니다.
[[:space:]]
- 개행 문자를 포함한 모든 공백 문자와 일치합니다.
? - optional
+
- 한 번 이상.
따라서 sed 명령은 --updated와 하나 이상의 공백 문자 및 날짜와 일치하는 모든 줄을 삭제하지만 d는 ? 문자 때문에 선택 사항입니다. 좋다:
--Updated Date: 2013-11-06 15:32:13
--Updated Date: 2013-11-06 15:32:13
--Updated Date: 2013-11-06 15:32:13
--Update Date: 2013-11-06 15:32:13
답변2
POSIX 기본 정규식을 사용하여 이를 수행하기 위해 내가 얻을 수 있는 가장 가까운 것은 다음과 같습니다.
sed '/--Updated*[[:space:]][[:space:]]*Date/d' inputfile
?
불행히도 실제 대체 항목 은 없으므로 a를 사용하면 여러 개의 s *
와도 일치할 수 있습니다 . d
그러나 a 를 두 번째로 사용하여 +
단순히 패턴을 반복하여 대체할 수 있습니다 .*
고쳐 쓰다
실제로 표현식 확장과 동일한 효과를 얻는 방법은 두 가지 패턴을 사용하는 것입니다.
sed \'
/--Updated[[:space:]][[:space:]]*Date/d
/--Update[[:space:]][[:space:]]*Date/d
' inputfile
답변3
cygwin에서 gnu sed 4.2.2를 사용하여 -r
플래그를 추가합니다.
'--Updated Date: 2013-11-06 15:32:13'|sed -r -e '/--Updated?[[:space:]]+Date/d'
출력이 인쇄되지 않습니다. -r
확장 정규식을 켜면 예상대로 작동 ?
합니다 . +
이것확장 정규식 참조내가 가장 많이 사용하는 점은 기본 정규식(기본값)에서 특별한 의미를 갖기 위해서는 앞에 백슬래시가 있어야 ?
한다는 것입니다 .+