计算文件中指定的单词

时间:2015-05-05 19:29:03

标签: linux bash scripting

我想创建脚本,找到我选择的单词数量,在我选择的文件中。

这是我的剧本:

#!/bin/bash
echo "Iveskite reiksme kurios kurios kurios ieskosime faile"
read reiksme
echo "Nurodykite faila kuriame ieskosime reiksmes"
read failas
kiek=$(awk '/$reiksme/' $failas | wc -l)
echo $kiek > kiek.txt

如果$ failas包含如下行:

$reiksme
$reiksme
$reiksme

那么没关系,但如果$failas包含如下行:

$reiksme $reiksme
random word $reiksme $reiksme
random random $reiksme

然后我的脚本无法计算多少单词。

3 个答案:

答案 0 :(得分:1)

awk只是在线上分裂。你可以通过几个步骤完成它,虽然可能有更简单的方法:

- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void ( ^)( NSDictionary * ))reply
{
   __block UIBackgroundTaskIdentifier watchKitHandler;
   watchKitHandler = [[UIApplication sharedApplication] beginBackgroundTaskWithName:@"backgroundTask"
                                                               expirationHandler:^{
                                                                 watchKitHandler = UIBackgroundTaskInvalid;
                                                               }];

   if ( [[userInfo objectForKey:@"request"] isEqualToString:@"getData"] )
   {
      // get data
      // ...
      reply( data );
   }

   dispatch_after( dispatch_time( DISPATCH_TIME_NOW, (int64_t)NSEC_PER_SEC * 1 ), dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^{
       [[UIApplication sharedApplication] endBackgroundTask:watchKitHandler];
    } );
}

用换行符替换所有空格,然后使用grep(或者你的awk,如果你愿意的话)来找到你想要的东西,然后计算它们

答案 1 :(得分:0)

我自己找到了答案。我刚刚改变了

kiek=$(awk '/$reiksme/' $failas | wc -l)

kiek=$(tr -cs 'A-Za-z' '\n' < $failas | grep -c "$reiksme")

答案 2 :(得分:0)

使用grep执行此操作的最佳方法是使用this post中所述的-o选项。把它放在一起为你:

kiek=$(grep -o "${reiksme}" | wc -l)