繁体   English   中英

如何在unix中解析管道或重定向运算符?

[英]How to parse a pipe or redirection operator in unix?

我目前正在研究猫程序。 我遇到的问题是,每当我执行unix命令时:

./catpr file1 file2 file3 | grep string

我不知道如何指出存在管道运算符来标记解析结束。 我目前正在通过使用系统调用在C语言中开发此cat程序,因此我使用argv来跟踪参数。 但是,每当我查看与“ |”相对应的数组中的内容时,就会发现确实很奇怪。

因此,您基本上需要在三个文件中搜索一个模式。

由于您已指定要使用系统调用执行操作,因此可以将字符串作为程序的输入参数。 只需执行以下编译

./catpr file1 file2 file3字符串

在程序内部,使用grep进行系统调用。 我正在为您提供完整的程序。 我希望这是您所需要的。

#include <stdio.h>
#include <string.h>
int main(int a,char *argv[])
{
    char com[256]="";
    strcat(com,"cat ");
    strcat(com,argv[1]);
    strcat(com," ");
    strcat(com,argv[2]);
    strcat(com," ");
    strcat(com,argv[3]);   
    strcat(com," | grep ");
    strcat(com,argv[4]);   //this is your search pattern
    system(com);
}   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM