Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 查找变量_C - Fatal编程技术网

C 查找变量

C 查找变量,c,C,目的:编写一个脚本,该脚本接受两个参数(directory和c var)并搜索目录中所有扩展名为c的文件 必须打印第二个参数中包含变量的每一行。变量也应该完全匹配,包括大小写,并且应该是一个完整的单词 文件名应以带有变量的行开头打印 任何帮助都将不胜感激。虽然grep是一个通用工具,但有一个专门为搜索源代码而设计的工具。默认情况下,它递归搜索目录树。它已经内置了哪些源文件扩展名与哪些语言关联的知识。例如,要在目录树中搜索出现名称someName的c文件,请使用: ack --cc '\bsome

目的:编写一个脚本,该脚本接受两个参数(directory和c var)并搜索目录中所有扩展名为c的文件

必须打印第二个参数中包含变量的每一行。变量也应该完全匹配,包括大小写,并且应该是一个完整的单词

文件名应以带有变量的行开头打印


任何帮助都将不胜感激。

虽然
grep
是一个通用工具,但有一个专门为搜索源代码而设计的工具。默认情况下,它递归搜索目录树。它已经内置了哪些源文件扩展名与哪些语言关联的知识。例如,要在目录树中搜索出现名称
someName
c
文件,请使用:

ack --cc '\bsomeName\b' /path/to/
注:

  • --cc
    告诉它搜索由扩展名
    .c
    .h.
    .xs
    标识的
    c
    -语言文件

  • \bsomeName\b
    是要搜索的正则表达式<代码>\b表示单词边界。如果你想阻止另一个名字的匹配,可以使用它
    ack
    完全支持
    perl
    正则表达式

  • 默认情况下,搜索是递归的。如果不想进入子目录,请使用
    -n

  • 如果您不喜欢ack的任何默认设置,那么它是非常可配置的


在类似debian的系统上,
ack
被笨拙地重命名为
ack grep
,以避免与名为
ack
的汉字转换器冲突。要安装,请运行
apt get install ack grep
。对于其他系统,请参见。

此处,您似乎希望使用
grep
搜索目录中的所有文件

阅读
mangrep
会让你在这方面有很大的进步,但特别值得注意的是它的
--include=GLOB
-r
--recursive
选项


您可以使用递归标志来避免使用
find
,然后使用
--include=
标志来指定仅以某个扩展名结尾的文件。

我个人从未使用过
ack
,因此无法进行评论,但
grep
非常适合于此

我使用这个命令在目录“unisa”中查找包含整个单词“name”以及扩展名cpp和h的所有文件

从手册页

-w  Select only those lines containing matches that form whole words.
-n  Prefix each line of output with the 1-based line number within its input file. (you may not want this, but I always use it)
-r Read all files under each directory, recursively
--include Search only files whose base name matches GLOB
我在我所有大学项目的目录中运行了示例中的命令,这是一个输出示例

cos2614/assignment_1/question_1/question_1.cpp:15: "Enter your details in the format \"first name: surname: employee number\"");
cos2614/assignment_1/question_2/customer.cpp:3:Customer::Customer(QString name, QString id)
cos2614/assignment_1/question_2/customer.cpp:4:    : m_Name(name), m_ID(id), m_DeliveryAddress(), m_BillingAddress()
cos2614/assignment_1/question_2/test.cpp:12:    QString name, id, address;
cos2614/assignment_1/question_2/test.cpp:14:    cout << "Please enter your name: ";
cos2614/assignment_1/question_2/test.cpp:16:    name = cin.readLine();
cos2614/assignment_1/question_2/test.cpp:22:    Customer cust(name, id);
cos2614/assignment_1/question_2/customer.h:15:        Customer(QString name, QString id);
cos2614/assignment_1/question_5/static3.h:10:        Client(string name): m_Name(name), m_ID(s_SavedID++) { }
cos2614/assignment\u 1/question\u 1/question\u 1.cpp:15:“以\“名字:姓氏:员工编号\”的格式输入您的详细信息”;
cos2614/assignment\u 1/question\u 2/customer.cpp:3:customer::customer(QString名称,QString id)
cos2614/assignment_1/question_2/customer.cpp:4::m_Name(Name)、m_ID(ID)、m_DeliveryAddress()、m_BillingAddress()
cos2614/assignment_1/question_2/test.cpp:12:q字符串名称、id、地址;

cos2614/assignment\u 1/question\u 2/test.cpp:14:cout你可以用。“忘记grep的人注定会很糟糕地重新实现它。”——有些人,在某些地方使用
find
在层次结构中搜索所有
.c
.h
文件,并使用
grep
打印这些文件中的匹配行。对于任何熟悉shell脚本的人来说,这些都是常见的命令,你怎么会“不知道”怎么做呢?这听起来像是一个shell脚本类的家庭作业,他们不是先教东西吗?这样的事情只使用grep怎么做?
grep-Pr--include='*.[ch]'\bsomeName\b'/path/to/
cos2614/assignment_1/question_1/question_1.cpp:15: "Enter your details in the format \"first name: surname: employee number\"");
cos2614/assignment_1/question_2/customer.cpp:3:Customer::Customer(QString name, QString id)
cos2614/assignment_1/question_2/customer.cpp:4:    : m_Name(name), m_ID(id), m_DeliveryAddress(), m_BillingAddress()
cos2614/assignment_1/question_2/test.cpp:12:    QString name, id, address;
cos2614/assignment_1/question_2/test.cpp:14:    cout << "Please enter your name: ";
cos2614/assignment_1/question_2/test.cpp:16:    name = cin.readLine();
cos2614/assignment_1/question_2/test.cpp:22:    Customer cust(name, id);
cos2614/assignment_1/question_2/customer.h:15:        Customer(QString name, QString id);
cos2614/assignment_1/question_5/static3.h:10:        Client(string name): m_Name(name), m_ID(s_SavedID++) { }