AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 530141
Accepted
Anandu M Das
Anandu M Das
Asked: 2014-09-30 06:37:42 +0800 CST2014-09-30 06:37:42 +0800 CST 2014-09-30 06:37:42 +0800 CST

如何命令grep不显示搜索到的字符串?[复制]

  • 772
这个问题在这里已经有了答案:
使用 sed 删除字符串的第一部分 (11 个答案)
7 年前关闭。

我想打印文件中一行的一部分。整条线看起来像这样。

Path=fy2tbaj8.default-1404984419419

我只想打印 之后的字符Path=。我试过了grep Path filename | head -5。但它不起作用。它仍然显示整条线。我怎样才能做到这一点?

command-line
  • 6 6 个回答
  • 49178 Views

6 个回答

  • Voted
  1. Sylvain Pineau
    2014-09-30T07:08:58+08:002014-09-30T07:08:58+08:00

    你可以使用grep并且只是grep:

    grep -oP "(?<=Path=).*" file
    

    在此处输入图像描述

    解释:

    来自man grep:

       -o, --only-matching
              Print only the matched (non-empty) parts of a matching line,
              with each such part on a separate output line.
       -P, --perl-regexp
              Interpret PATTERN as a Perl compatible regular expression (PCRE)
    

    lookbehind断言在字符串的当前位置,前面是characters 。如果断言成功,则引擎匹配解析模式。(?<=Path=)Path=

    对于 Perl 5 正则表达式语法,请阅读Perl 正则表达式手册页。

    • 42
  2. Best Answer
    g_p
    2014-09-30T06:44:01+08:002014-09-30T06:44:01+08:00

    您可以cut为此目的使用命令。

    grep Path filename |cut -c6-
    

    这里-c6-的选项表示从第 6 个字符打印到最后一个字符。

    • 15
  3. shellter
    2014-09-30T06:57:33+08:002014-09-30T06:57:33+08:00

    awk解决方案是我会使用的,但是启动过程稍微小一点,sed它可以产生相同的结果,但是通过将行的 PATH= 部分替换为"",即

      sed -n 's/^Path=//p' file
    

    -n覆盖sed的默认行为是“打印所有行”(因此-n= 不打印),要打印一行,我们在替换后添加字符p。只会打印发生替换的行。

    这为您提供了您所要求的行为,即grep输入一个字符串,但删除该Path=行的一部分。

    如果根据 David Foerster 的评论,您有一个大文件并且希望在匹配并打印第一个匹配项到“Path=”后立即停止处理,您可以使用q命令告诉 sed 退出。{ ..}请注意,您需要通过将每个命令包围并用 . 分隔来使其成为一个命令组;。所以增强命令是

    sed -n 's/^Path=//{p;q;}` file
    

    IHTH

    • 7
  4. Jan
    2014-09-30T06:43:16+08:002014-09-30T06:43:16+08:00

    grepgreps 一行文本并显示它。head显示前n行文本,而不是字符。

    您正在寻找sed或awk:

    awk '{print $2}' FS='='
    

    这设置=为字段分隔符并打印第二个字段。

    • 5
  5. cuonglm
    2014-09-30T09:03:12+08:002014-09-30T09:03:12+08:00

    使用 GNU grep:

    $ echo Path=fy2tbaj8.default-1404984419419 | grep -oP '(Path=)\K.*'
    fy2tbaj8.default-1404984419419
    

    \K保留 \K 左边的内容,不要将其包含在$&.

    • 5
  6. fedorqui
    2014-09-30T07:25:38+08:002014-09-30T07:25:38+08:00

    当然解决方案是使用grep -Po.

    为了完整起见,让我们添加一些其他解决方案:

    • 与cut,设置分隔符=:

      cut -d'=' -f2 file
      
    • 这可能有点冒险,但您也可以获取文件,以便$Path包含该值。

      source file
      echo "$Path"
      

    测试

    $ cat a
    this=aaabbccc
    that=dddeee
    $ source a
    $ echo "$this"
    aaabbccc
    $ echo "$that"
    dddeee
    

    根据评论,查看如何source仅部分文件:

    $ cat a
    Path=22
    Path=33
    $ source a
    $ echo $Path
    33
    $ source <(head -1 a)
    $ echo $Path
    22
    
    • 1

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve