【问题标题】:I would like to extract words before ' & " using grep我想使用 grep 提取“&”之前的单词
【发布时间】:2019-07-19 03:29:44
【问题描述】:

例如,我有一个包含“fab fa-”字符串集的代码

"fab fa-123" -> fab fa-123
'fab fa-123' -> fab fa-123

现在在 unix 中,我想在特殊字符 " 或 ' 之前提取所有 fab fa 字符和数字。

我正在使用正则表达式,

grep -r -o -h 'fab fa-.*' > filename.txt

结果是这样的:

fab fa-123"blahblah
fab fa-123'blahblah

我想提取" and ' 之前的单词。我怎样才能做到这一点?

我需要你的帮助。谢谢!

【问题讨论】:

  • 你好,->是什么意思???是“换行符”的意思吗?如果您有多行输入和多行输出,请写成它们出现在终端中,即:多行
  • 我想将单词从“fab fa-123”提取到没有“”的fab fa-123
  • 必须是grep 还是可以使用sed?对于您的具体示例,您可以使用grep -ow '[[:alnum:][:blank:]-]*'
  • 感谢您的回复。我忘了提到有这样的模式“fab fa-123-123”我可以提取单词fab fa-???-???只有没有“”使用sed?

标签: regex bash shell unix


【解决方案1】:
grep -r -o "[^\"\']*" inputfile > outputfile

【讨论】:

    【解决方案2】:

    怎么样

    grep -o '^[^"'"']*"
    

    ?这里的模式是^[^"']*,但由于引号对shell 有特殊含义,所以我将模式的前半部分用单引号括起来,后半部分用双引号括起来。另一种方法是反斜杠转义引号:

    grep -o "^[^\"']*"
    

    【讨论】:

    • 感谢您的帮助!我使用这样的代码:grep -r -o -h 'fab fa^[^\"']*',但是代码不起作用。很抱歉,我是新手,所以你能编辑这段代码?
    • @hiyo:与我的代码比较:您使用单引号作为外引号。我用了双引号。
    • 感谢您的回复!我试过了,但它不起作用...感谢您的时间和努力!
    • @hiyo:发布你现在拥有的代码,以及你得到的结果。如果它对我有用,它也应该对你有用。
    • 再次感谢您的回复。 grep -r -o "fab fa^[^\"']*" * 结果什么也没显示:)
    猜你喜欢
    • 2013-07-11
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 2019-03-21
    • 2012-07-25
    相关资源
    最近更新 更多