【问题标题】:To grep from file to get expected result从文件中 grep 以获得预期结果
【发布时间】:2021-04-23 08:07:14
【问题描述】:

我的文件包含定义了一些值的变量 ans。我正在尝试使用 grep 命令获取所有这些变量。我想根据 "=" 符号列出它们。我知道使用 grep "ans" Test.txt 将列出所有 ans 变量。但这不是我要找的。如果我这样做 grep "ans="Test.txt 它应该列出所有以名称 ans 存在的变量。

请帮帮我,我怎样才能完成这项工作

test.txt

    ans= 10;
    ans =11;
    ans   = 5;
    ans   =    8;

普通的grep命令o/p:-

grep ans test.txt

ans= 10;
ans =11;
ans   = 5;
ans   =    8;

预期的 grep 命令 o/p:-

grep "ans=" test.txt

ans= 10;
ans =11;
ans   = 5;
ans   =    8;

【问题讨论】:

  • 你的 grep 输出和预期的输出看起来一样,有什么区别呢?请确认一次。
  • @RavinderSingh13 :预期的 grep 命令输出不会像正常的 grep 命令输出那样给我们结果。我正在寻找的是基于变量名 ans 和“=”符号,看起来像 grep“ans="test.txt,我期待正常的命令输出

标签: linux awk sed command-line grep


【解决方案1】:

你可以试试这个awk:

awk -v key='ans=' '
{
   s = $0
   gsub(/[[:blank:]]+/, "", s)
}
s ~ "^" key {
   print
   exit
}' test.txt

    ans= 10;
    ans =11;
    ans   = 5;
    ans   =    8;

【讨论】:

  • 第一个选项不提供任何输出!你能检查一次命令吗
  • 第二个工作正常。 @anubhava 如果想调整以仅获得第一个结果元素,请您取悦我!我该如何调整命令
  • 您想在 = 之前获得部分,还是只获得第一条记录?
  • 我的意思是当我执行以下命令时 awk -v key='ans=' '{s = $0; gsub(/[[:blank:]]+/, "", s)} s ~ "^" key' test.txt 它应该提供如下输出 ans= 10;
【解决方案2】:
$ grep 'ans *=' file
    ans= 10;
    ans =11;
    ans   = 5;
    ans   =    8;

如果这还不是您所需要的,那么请编辑您的问题以阐明您的要求并提供更好的示例输入/输出,以便彻底测试您的要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多