【问题标题】:How to search for a strings between two tokens in a directory in ubuntu terminal and save the output如何在 ubuntu 终端的目录中搜索两个标记之间的字符串并保存输出
【发布时间】:2015-01-29 10:48:58
【问题描述】:

我正在目录中查找字符串“gem '”和字符串“'”之间的所有内容。

例如:

gem 'mysql2'

在上面的示例中,我会寻找这样的输出:

mysql2

我参与过几个 Rails 项目,所以我想从他们的 gem 文件中列出我迄今为止使用过的所有 gem。

重要的是我还可以将数据输出保存在文本文件中。

【问题讨论】:

    标签: regex linux terminal grep


    【解决方案1】:

    你可以使用awk:

    s="gem 'mysql2'"
    awk -F"'" '{print $2}' <<< "$s"
    mysql2
    

    要保存输出使用:

    var=$(awk -F"'" '{print $2}' <<< "$s")
    

    说明:

    • -F"'" - 使用 ' 作为字段分隔符
    • print $2 打印第二个字段,即单引号内的字符串

    同样的事情使用grep -oP:

    grep -oP "'\K[^']+" <<< "$s"
    mysql2
    

    【讨论】:

    • 如何在目录中找到这个?
    • 我也使用 -r 进行递归搜索,grep -roP "gem '\K[^']+" 这是使用的确切命令,这对我有帮助。 +1
    • 您也可以使用awk -F"'" '{print $2}' file,但grep 对递归搜索的支持更好。
    【解决方案2】:

    除了另一个答案,还有另一种方法可以提取两个单引号之间的字符串。

    echo "gem 'mysql2'"|cut -d"'" -f2
    

    解释如下,

    cut -d"'" -f2
    

    cut 命令将使用分隔符 ' 从文本 gem 'mysql2' 中查找第二个字段。

    输出将如下,

    mysql2
    

    这是我尝试过的,

    【讨论】:

      猜你喜欢
      • 2018-06-01
      • 1970-01-01
      • 2022-01-11
      • 2017-05-09
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多