0

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

main.m:37 |、LinkedList.m:95 |、NICellFactory.mm:89|のようなインスタンスがあります など、つまりテキストメイトでは、これらの発生を正規表現を使用して一致させることができます

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

今私がsedで同じことをしようとすると

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

Sedはこれらのインスタンスを置き換えていないようです。私もバックラッシュを使ってみました。

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

それでもsedはそのような出来事に取って代わるものではありません。

誰かが私が間違っていることを理解するのを手伝ってくれますか?

ありがとう

4

2 に答える 2

1

正当な理由もなく追加した円記号が問題です。また、sed方言は+そのままの繰り返しをサポートしていない可能性があります。代わりに試してみるか、マニュアルページでまたはオプションを*探してください。-r-Esed

于 2012-12-26T09:13:56.627 に答える
1

以下は私のために働きます:

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

万が一に備えてバックアップファイルを作成します。

sed+、\ w、\ d構文をサポートしていないようですので、の代わりに[a-ZA-Z][a-zA-Z]*、などの代わりに使用しました。[a-zA-Z]+mm*m+

また、角かっこで囲む必要がないため、次の[\.][m]+[:]+ように置き換えることができます。\.mm*::*

sedバージョンが-rオプションをサポートしている場合は、全体を次のように簡略化できます。

sed -i.bck  "s/[a-zA-Z]+\.m+:+[0-9]+\s|/ /g"  prova_sed.txt
于 2012-12-26T09:48:52.973 に答える