C 查找变量
目的:编写一个脚本,该脚本接受两个参数(directory和c var)并搜索目录中所有扩展名为c的文件 必须打印第二个参数中包含变量的每一行。变量也应该完全匹配,包括大小写,并且应该是一个完整的单词 文件名应以带有变量的行开头打印C 查找变量,c,C,目的:编写一个脚本,该脚本接受两个参数(directory和c var)并搜索目录中所有扩展名为c的文件 必须打印第二个参数中包含变量的每一行。变量也应该完全匹配,包括大小写,并且应该是一个完整的单词 文件名应以带有变量的行开头打印 任何帮助都将不胜感激。虽然grep是一个通用工具,但有一个专门为搜索源代码而设计的工具。默认情况下,它递归搜索目录树。它已经内置了哪些源文件扩展名与哪些语言关联的知识。例如,要在目录树中搜索出现名称someName的c文件,请使用: ack --cc '\bsome
任何帮助都将不胜感激。虽然
grep
是一个通用工具,但有一个专门为搜索源代码而设计的工具。默认情况下,它递归搜索目录树。它已经内置了哪些源文件扩展名与哪些语言关联的知识。例如,要在目录树中搜索出现名称someName
的c
文件,请使用:
ack --cc '\bsomeName\b' /path/to/
注:
告诉它搜索由扩展名--cc
、.c
和.h.
标识的.xs
-语言文件c
是要搜索的正则表达式<代码>\b表示单词边界。如果你想阻止另一个名字的匹配,可以使用它\bsomeName\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++) { }