2013-04-23 4 views
1

sed를 사용하여 html 파일에서 패턴을 삭제하려고합니다. 타임 스탬프는 1-2 자리 숫자의 네 글자 단어 다음 단어를 구성 전에Sed는 정규식을 사용하여 파일에서 타임 스탬프를 제거합니다.

예 :

25 mins ago 

나 :

1 hour ago 

등등. 나는 이런 식으로 나오지 사용하여 시도했다 :

sed -i "s/([0-9]{1,2}) [a-z]* ago//g" 

Sed의는 아무것도하지 않는다, 나는 문자 올바른 방법으로 탈출하고 있지 않다 경우 난 내 정규식이 잘못된 경우 확실하지 않다 나.

편집 : 추가 공간을 제거하여 그 표현을 고쳤습니다. 감사합니다. choroba. 이제 sed는 파일에서 텍스트의 mos를 제거합니다. 표현은 욕심이 덜해야합니까? 또한 지금까지 타임 스탬프가 > < 예에 둘러싸여 있음을 언급해야한다 :

>1 hour ago< 

편집 : 이것은 나를 위해 일한 것입니다. 고맙다 ravoori.

sed -i 's/[0-9]\{,2\} [[:alpha:]]\{4,5\} ago//g' 

도움을 주시면 감사하겠습니다.

+0

으로 정량 메타 문자 {}을 탈출해야합니다. – choroba

+0

덕분에 도움이 되었습니까? 파일에서 모든 텍스트를 삭제했습니다. 이것을 덜 욕심스럽게 만드는 방법에 대한 아이디어가 있습니까? – almyz125

+1

예제 파일은 어떻게 생겼으며 명령을 실행 한 후 예상되는 결과는 무엇입니까? – FDinoff

답변

3

다음을 시도해보십시오. 당신은`*`후 2 공백이 sed

echo "1 hour ago" | sed 's/[0-9]\{,2\} [[:alpha:]]\{4\} ago//g' 
+0

고마워요. 매력처럼 작동 했어. 약간 sed -i로 편집해야 했어. 내가 바보이기 때문에 {4,5}로 만들고 그 시간은 5 글자 길다는 것을 잊어 버렸다. 감사! – almyz125

+0

sed -i의/[0-9] \ {, 2 \} [[: alpha :]] \ {4,5 \} 전 // g ' – almyz125

0
echo "1 hour ago" | sed -e 's/.*ago$//g' 

또는

sed -e 's/.*ago$//g' <filename> 

filename

당신은 ago로 끝나는 바로 타임 스탬프가 아닌 다른 라인이있는 경우이를 사용할 수 없습니다에 ago로 끝나는 모든 라인을 제거해야합니다 . 당신은 지정하지 않았습니다.

+0

그럴 필요가 없습니다. 역동적이어야합니다. 1 분에서 59 시간까지, 그리고 1 시간부터 24 시간까지 – almyz125

+0

입니다. 그래서'Hello ago'도 역시 삭제하고 싶습니까? – abasu

+0

Hello가 무엇을 의미하는지 확실하지 않습니다. – almyz125

관련 문제