将脚本从Shell传输到C

将脚本从Shell传输到C,c,C,我有一个脚本,可以从文件中读取、排序和显示数据外壳 #!/bin/awk sort -t ' ' -k 10 -r -n log.txt | head -n 10 | awk '{sum+=$10; array[NR,1]=$11; array[NR,2]=$10; next;} END { for (i = 1; i <= 10; i++) printf "%3.0f'\.' %s \b '\-' %s \b '\-' %3.1f'\%' \

我有一个脚本,可以从文件中读取、排序和显示数据外壳

   #!/bin/awk
    sort -t ' ' -k 10 -r -n log.txt | head -n 10 | awk '{sum+=$10; array[NR,1]=$11; array[NR,2]=$10; next;} END {

      for (i = 1; i <= 10; i++)

        printf "%3.0f'\.' %s \b '\-' %s \b '\-' %3.1f'\%' \n", i, array[i,1], array[i,2], array[i,2]/sum*100

     }'
我的任务是只在C*.C中执行同样的操作。
我知道怎么读这个文件。已知grep函数。我不知道如何替换awk函数。

不要考虑将shell脚本逐行翻译成一些C代码,而是考虑从头开始设计和实现一个具有与shell脚本相当功能的C程序

我猜你的目标是一些Linux系统,我想你知道一些

您可能会发现以下C函数很有用:用于排序;或者读一行通用型免费至少用于粗错误处理;对于解析以前读取的行,不要忘记使用返回的项目计数;用于regexpr匹配;&要搜索字符串内部,特定于Linux或GNU!,构建字符串

如果您想在C中做一些HTTP客户端处理,请考虑使用一些类似HTTP客户端库;如果您想在C中使用HTTP服务器库,请考虑./P> 我也推荐阅读

我假设您在某种程度上熟悉C语言。如果不熟悉,您可能会发现学习或使用C语言更容易


顺便说一句,使用gcc-Wall-Wextra-g编译,了解如何使用gdb调试器&.

以及您的问题在哪里?或者你认为会有人帮你解决问题吗?我知道怎么读文件。我认识格雷普。我不知道如何替换awk函数。为什么要在C中这样做?你为什么不能用你的剧本?因为它是我在大学的家庭作业。我把程序放在Shell里。下一步是POSIX并用C写。要读取该文件,必须先用fopen打开该文件。如果您学会使用getline或fgets一次一行读取文件,然后使用字符指针或sscanf解析该行,您将受益匪浅。您不需要重新编码awk,您需要分析特定的awk语句的功能,然后编写代码。不难,只是一些运动部件。将sort-t'-k10-r-nlog.txt | head-n10与通过管道传输到awk的结果进行比较,以查看差异。我现在学习POSIX。谢谢你的提示。这应该是一个简单的方法,学习Linux可能会更简单,稍后会发现Linux和POSIX之间的细微差别,这是一个规范。
 1. "http://www.example.org/example/When/200x/2004/11/08/Yellow" - 1116675 - 50.5%
  2. "http://www.example.org/example/When/200x/2003/07/25/NotGaming" - 220810 - 10.0%
  3. "http://www.example.org/example/When/200x/2003/07/25/NotGaming" - 183618 - 8.3%
  4. "http://www.example.org/example/When/200x/2003/07/25/NotGaming" - 161648 - 7.3%
  5. "http://www.example.org/example/When/200x/2003/07/25/NotGaming" - 160646 - 7.3%
  6. "http://www.example.org/example/When/200x/2003/07/25/NotGaming" - 156241 - 7.1%
  7. "http://www.example.org/example/When/200x/2003/07/25/NotGaming" - 62006 - 2.8%
  8. "http://www.example.org/example/serif.css" - 52140 - 2.4%
  9. "http://www.example.org/example/serif.css" - 52140 - 2.4%
 10. "-" - 44877 - 2.0%