c++ 这个参数在命令行中是什么意思? |grep MATCH >zoutmatchess

c++ What does this argument mean in the command line? | grep MATCH >zoutmatchess

本文关键字:MATCH grep gt zoutmatchess 意思 参数 命令行 是什么 c++      更新时间:2023-10-16

在命令行执行程序时,有三个参数,如下所示:

../../xinputa.txt ../../xinputb.txt | grep MATCH > aoutmatches

(这个命令是作为参数给我的)

在我的主程序中,我有:

int main(int argc, char *argv[]) {
  double timenew = 0.0;
  string data_filename = "";
  string pattern_filename = "";
  string timestring = "";
  string outFileName = "";
  ofstream cout;
  Scanner in_scanner;
  SMatch stringmatch;
  CheckArgs(3, argc, argv, "datafilename patternfilename outfilename");
  data_filename = static_cast<string>(argv[1]);
  pattern_filename = static_cast<string>(argv[2]);
  outFileName = static_cast<string>(argv[3]);
  FileOpen(cout, outFileName);

  cout << kTag << "Beginning executionn";

我有很多行看起来就像^

上面的那行

我完成了我的主题。cc:

FileClose(cout);

这个信息只是给你一点背景知识。我只是想知道

这些参数符合我所要求的和这个参数的确切含义:

| grep MATCH >zoutmatchess 

. ./. ./. ./. ./xinputa.txt xinputb.txt | grep比赛> aoutmatches

实际上,你的程序有这些命令行参数:

  • argv[0]是您的程序名
  • argv[1]指向../../xinputa.txt
  • argv[2]指向../../xinputb.txt

部分| grep MATCH > aoutmatches本身不是命令行参数。它的管道机制将程序输出定向到grep的输入,并再次将该输出的结果重定向到文件名aoutmatches

| grep MATCH >zoutmatchess不是给定给程序的参数列表的一部分,假设它是这样调用的:

./myProgram ../../xinputa.txt ../../xinputb.txt | grep MATCH > aoutmatches

|是一个管道,它指示从前面命令输出到标准输出(标准输出,又名std::cout)的输出应该被重定向到下面命令的标准输入(标准输入,又名std::cin)。

>也是对前面命令的stdout的重定向,但这次是指向令牌后面指定的文件。

因此你的代码行是这样做的:

用两个参数../../xinputa.txt../../xinputb.txt启动myProgram。同样以一个参数MATCH启动grep,然后将myProgram的输出作为输入传递给grep,最后将grep的输出写入文件aoutmatches

grep是一个命令,用于过滤包含特定字符串(MATCH)的行。

因此,您只需要从argv中获取前两个参数(包括索引为零的一个,这是程序名),并将结果不写入文件,而是写入std::cout

相关文章: