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
    • 最新
    • 标签
主页 / server / 问题 / 633148
Accepted
Greg_the_Ant
Greg_the_Ant
Asked: 2014-10-03 11:06:50 +0800 CST2014-10-03 11:06:50 +0800 CST 2014-10-03 11:06:50 +0800 CST

grep 在 Fedora 和 Ubuntu 上的表现不同

  • 772

所以当我在 Fedora 中运行它时,我看到了这个:

$ ls hmm_data/indivA12_AATAAG/refs/par1/
2R-orths.alleles  2R-ref.alleles
$ ls hmm_data/indivA12_AATAAG/refs/par1/ | grep -F '-ref.alleles'
2R-ref.alleles

但是当我在 Ubuntu(相同数据)上运行时,我没有从 grep 中得到任何结果:

$ ls hmm_data/indivA12_AATAAG/refs/par1/
2R-orths.alleles  2R-ref.alleles
$ ls hmm_data/indivA12_AATAAG/refs/par1/ | grep -F '-ref.alleles'

任何想法可能会发生什么?我怎样才能想出在两个系统上都可以工作的东西?

ubuntu
  • 3 3 个回答
  • 994 Views

3 个回答

  • Voted
  1. Best Answer
    user193597
    2014-10-03T11:35:16+08:002014-10-03T11:35:16+08:00
    grep -F '-ref.alleles'
    

    相当于:

    grep -F -ref.alleles
    

    (撇号之间的字符都不是 shell 元字符,所以引用它们没有任何效果。)

    这又相当于:

    grep -F -r -e f.alleles
    

    通过正常解析-前缀选项。该-e选项需要一个参数,但-F不要-r。

    由于您没有为 grep 指定任何文件,因此默认行为是对标准输入进行操作...除了该-r选项没有意义,因此它默认为.递归搜索(当前目录)并忽略标准输入。在某些版本中。

    您需要在以as--开头的正则表达式之前使用“没有更多选项”指示符-

    grep -F -- -ref.alleles
    

    我追踪了-r没有文件参数的行为发生变化的点。它是 2.11 版,于 2012 年 3 月 2 日发布。请参阅发布公告。

    影响行为的 git 提交是this和this。

    如果你grep --version在你的两台机器上运行,我相信你会发现其中一台在 2.11 的错误一侧

    • 30
  2. Cyrus
    2014-10-03T11:30:57+08:002014-10-03T11:30:57+08:00

    领先-是问题。要获得相同的结果,请添加--:

    grep -F -- '-ref.alleles'
    

    来自man bash:

    A -- signals the end of options and disables further option
    processing. Any arguments after the -- are treated as filenames
    and arguments.
    
    • 6
  3. Glueon
    2014-10-03T11:25:36+08:002014-10-03T11:25:36+08:00

    检查 .bashrc 是否在您的 grep 命令上有任何别名覆盖了它的行为。也许这就是问题所在。也可以尝试不带“-F”参数的 grep。

    • 1

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve