2012-12-26 3 views
0

정규식을 sed와 함께 사용할 때 문제가 발생했습니다. 95 |, NICellFactory.mm:89 | : LinkedList.m | 37 : main.m 같은 인스턴스가sed를 사용하여 특정 문자열을 정규 표현식으로 대체

Call stack: [thread 0xac0aaa28]: | start | main main.m:37 | UIApplicationMain | GSEventRun | GSEventRunModal | CFRunLoopRunInMode | CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoSource1 | __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ | mshMIGPerform | _XCopyAttributeValue | _AXXMIGCopyAttributeValue | _copyAttributeValueCallback | -[NSObject(AXPrivCategory) accessibilityAttributeValue:] | -[UITableViewCellAccessibilityElement _accessibilityIsTableCell] | -[UITableViewCellAccessibilityElement tableViewCell] | -[UITableViewAccessibility(Accessibility) accessibilityCellForRowAtIndexPath:] | -[UITableView(UITableViewInternal) _createPreparedCellForRowAtIndexPath:] | -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] | -[MailViewController tableView:cellForRowAtIndexPath:] | +[NICellFactory tableViewModel:cellForTableView:atIndexPath:withObject:] NICellFactory.m:89 | +[NICellFactory cellWithClass:tableView:object:] NICellFactory.m:67 | -[SwipableTableViewCell shouldUpdateCellWithObject:] | -[SwipableTableViewCell updateCellWithObject:] | -[ThreadCellFrontView updateCellWithObject:] | -[ThreadSummaryView updateWithNugget:] | -[JavaUtilLinkedList init] LinkedList.m:49 | -[JavaUtilLinkedList initJavaUtilLinkedList] LinkedList.m:40 | +[NSObject alloc] | +[NSObject allocWithZone:] | _objc_rootAllocWithZone | class_createInstance | calloc | malloc_zone_calloc 

: 나는 같은 문자열이 내가 Sed의이 인스턴스를 교체하지 않는 것

sed 's/\[a-zA-z]+[.][m]+[:]+[0-9][ |]+/ /g' 

을 사용 나오지도에서 같은 일을 할 때 등 즉 텍스트 메이트 내가 지금 정규식

[a-zA-z]+[.][m]+[:]+[0-9]+[ |]+ 

을 사용하여이 발행 수를 일치시킬 수 있습니다. 내가 너무 즉

sed 's/\[a-zA-z\]+\[\.\]\[m\]+\[:\]+\[0-9\]+\[ |\]+/ /g' 

가 여전히 발행 수를 대체하지 않습니다 나오지 백래쉬를 사용하여 시도했다.

내가 뭘 잘못했는지 이해할 수있는 사람이있을 수 있습니까?

감사

답변

1

당신이 이유없이 추가 된 백 슬래시가 문제입니다. 또한 sed 사투리는 + 반복 사용을 지원하지 않을 수도 있습니다. * 대신 시도하거나 sed 매뉴얼 페이지에서 -r 또는 -E 옵션을 찾으십시오. 나를 위해

1

다음 작품 :

sed -i.bck "s/[a-zA-Z][a-zA-Z]*\.mm*::*[0-9][0-9]*\s|/ /g" prova_sed.txt 

그것은 단지의 경우 백업 파일을 만듭니다.

sedmm* 대신 m+의 등, w와 \ D 구문 내가 사용했습니다 [a-ZA-Z][a-zA-Z]* 대신 [a-zA-Z]+ \의 +를 지원하지 않는 것 같습니다.

또한 나오지 버전은 모든 것이

sed -i.bck "s/[a-zA-Z]+\.m+:+[0-9]+\s|/ /g" prova_sed.txt 
로 단순화 할 수있는 -r 옵션을 지원하는 경우 당신이 그렇게 [\.][m]+[:]+\.mm*::*

로 대체 할 수 대괄호 안에 하나의 문자를 넣을 필요는 없습니다

관련 문제