【问题标题】:Use double quote in grep to match end of line在 grep 中使用双引号来匹配行尾
【发布时间】:2013-12-16 13:16:03
【问题描述】:

我正在使用 grep 来匹配 Cshell 中的文件名。 我想匹配所有适合的文件 $名称。 没有任何其他文件匹配,例如 $name..

当使用美元符号强制匹配出现在行尾时,效果很好。唯一的问题是,当我想使用变量 $name 时,我必须使用双引号 "" 而不是 '',然后 $ 不起作用。

> ls back_dir | grep 'aa\.[0-9]$'
aa.1
aa.2

>ls back_dir | grep "aa\.[0-9]$"
Illegal variable name.

【问题讨论】:

  • 不要使用 C-shell 编写脚本,否则在可预见的将来,您会为这样的事情而烦恼。谷歌“C shell 为什么不”。
  • 你可能需要看到这个:Top Ten Reasons not to use the C shell。第一个原因会告诉你遇到了什么。
  • @devnull - 很棒的链接。它实际上显示了这个确切的问题,包括我的“解决方案”(不起作用,现在被删除)和正确的(但是 wtf?!!)方法。 Ed 的建议显然是合理的。我喜欢布鲁斯巴内特的作品。他的awk 教程仍然是我的最爱。

标签: regex sed csh tcsh


【解决方案1】:

你也可以混合"'

ls back_dir | grep "aa.[0-9]"'$'

(注意:在 bash 和 C-shell 中工作。)

【讨论】:

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