sed 's/a.*b/xyz/g;' old_file > new_file
GNU sed (который Вы, вероятно, имеете) еще более универсален:
sed -r --in-place 's/a(.*)b/x\1y/g;' your_file
Вот краткое объяснение тех опций:
-i [СУФФИКС], - оперативные файлы редактирования [=SUFFIX] на месте (делает резервное копирование, если расширение предоставило)
-r, - regexp-расширенный расширенные регулярные выражения использования в сценарии.
версия FreeBSD также поддерживает эти опции. NetBSD и поддержка версий OpenBSD [только 112].
, Если Вы хотите узнать больше о sed, , Cori предложил это учебное руководство .
Не уверен, что это поможет, но вы также можете сохранить массив NSArray в plist; в отличие от NSDictionary (который возвращает ключи в случайном порядке), вы получаете их обратно, когда вставляете их.
-сравнение: сравнение строк. Передайте другой метод сравнения, например:
@implementation NSString (numericComparison)
- (NSComparisonResult) compareNumerically:(NSString *) other
{
float myValue = [self floatValue];
float otherValue = [other floatValue];
if (myValue == otherValue) return NSOrderedSame;
return (myValue < otherValue ? NSOrderedAscending : NSOrderedDescending);
}
@end
В вашем конкретном случае вы можете вместо этого использовать -intValue.
как насчет использования ключейSortedByValueUsingSelector (NSD словарь)
Похоже на то, что Вам нужно, согласно документации в XCode
.@implementation NSString (numericComparison)
- (NSComparisonResult) floatCompare:(NSString *) other
{
float myValue = [self floatValue];
float otherValue = [other floatValue];
if (myValue == otherValue) return NSOrderedSame;
return (myValue < otherValue ? NSOrderedAscending : NSOrderedDescending);
}
- (NSComparisonResult) intCompare:(NSString *) other
{
int myValue = [self intValue];
int otherValue = [other intValue];
if (myValue == otherValue) return NSOrderedSame;
return (myValue < otherValue ? NSOrderedAscending : NSOrderedDescending);
}
@end
NSString *defaultNames[] = {@"Matt", @"Terry",@"Jessica",@"Sean",nil};
// NSNumber *defaultScores[] = {@"600", @"500",@"100",@"50", nil};
NSNumber *defaultScores[] = {
[NSNumber numberWithInt:600],
[NSNumber numberWithInt:500],
[NSNumber numberWithInt:100],
[NSNumber numberWithInt:50],
nil
};
NSDictionary *newScoreDict = [NSDictionary dictionaryWithObjects:(id *)defaultScores forKeys:(id *)defaultNames count:4];
NSArray *currScores = [newScoreDict keysSortedByValueUsingSelector:@selector(intCompare:NotSureWhatGoesHere:)];
Меня все еще не путает с предыдущей строкой?
Я просто использую
//
NSArray *currScores = [newScoreDict keysSortedByValueUsingSelector:@selector(intCompare:other:)];
//
В порядке ли массив чисел или есть более простой способ ?
Большое спасибо ...