【问题标题】:To read desired values from file using linux system commands (grep,awk,sed) [closed]使用 linux 系统命令(grep、awk、sed)从文件中读取所需的值 [关闭]
【发布时间】:2021-07-19 13:42:08
【问题描述】:

我的文件 test.txt 包含一些分配给某个值的变量,我需要读取所有已定义的变量,例如 color = 0;。基本上我想在这里阅读的是参数()->getParm(“”)的前一行的值;

你能帮我弄清楚如何读取这些值吗?还提到了我的预期结果。

cat test.txt

   color = 0;
   parameters()->getParm(&color, "-color");
   
   width = 16;
   parameters()->getParm(&width, "-width");

   size = 0;
   parameters()->getParm(&size, "-size");

   species = "Taxon";      
   parameters()->getParm(&species, "-species");

   fly = 100;
   parameters()->getParm(&fly, "-fly");

   swim = 25;
   parameters()->getParm(&swim, "-swim");
 

    expected result:
     color = 0;
     width = 16;
     size = 0;
     species = "Taxon";
     fly = 100;
     swim = 25;

【问题讨论】:

  • can you please help me 使用awk,它看起来像一个简短的脚本。 here is sed introduction,但 here is for awk 和 awk 也有 a tutorial on tutorialspointgrep 用于过滤 lines - 在这种情况下,行对您没有帮助,您想从行中提取数据。
  • 你的例子可能太琐碎了; grep -vF 'parameters()->getParm' 已经大致按照你的要求做。

标签: linux awk sed command-line grep


【解决方案1】:

我会按照使用 GNU AWK 的方式来做,让 file.txt 内容成为

   color = 0;
   parameters()->getParm(&color, "-color");
   
   width = 16;
   parameters()->getParm(&width, "-width");

   size = 0;
   parameters()->getParm(&size, "-size");

   species = "Taxon";      
   parameters()->getParm(&species, "-species");

   fly = 100;
   parameters()->getParm(&fly, "-fly");

   swim = 25;
   parameters()->getParm(&swim, "-swim");

然后

awk '/parameters()/{print line}{line=$0}' file.txt

输出

   color = 0;
   width = 16;
   size = 0;
   species = "Taxon";      
   fly = 100;
   swim = 25;

解释:我们需要存储上一行,以便在找到行满足条件时可以print它。我使用变量名line 来存储它,我指示awk 对于每一行:如果它确实包含parameters() print 上一行(存储在变量line 中),始终将当前行存储为line .请注意,此解决方案假定带有 parameters() 的行永远不会是第一行,而相关行总是紧接在带有 parameters() 的行之前。

(在 gawk 4.2.1 中测试)

【讨论】:

    猜你喜欢
    • 2021-07-10
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2021-06-19
    相关资源
    最近更新 更多