使用 linux 系统命令(grep、awk、sed)从文件中读取所需的值
To read desired values from file using linux system commands (grep,awk,sed)
我有文件 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;
我会按照使用 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=[=11=]}' 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 中测试)
我有文件 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;
我会按照使用 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=[=11=]}' 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 中测试)