代码之家  ›  专栏  ›  技术社区  ›  Flame_Phoenix

如何使用“sed”获取字符串的一部分?

  •  0
  • Flame_Phoenix  · 技术社区  · 6 年前

    背景

    我有一个文件,其中包含有关我的应用程序的信息。我需要使用 sed

    客观的

    app: :my_super_app,
    version: "1.4.2",
    

    使用 grep cat 我成功地做到了这一点:

    cat my_file | grep app: | sed -e 's/.*app: "\(:\)",/\1/'
    

    app: :my_super_app

    我希望它能准确地返回字符串 my_super_app

    问题

    塞德 命令实际上什么也不做。现在我可以删除它,命令也一样。

    我检查了一些类似的问题:

    3 回复  |  直到 6 年前
        1
  •  2
  •   fancyPants    6 年前

    试着这样做:

    sed -e 's/.*app: :\(.*\),/\1/'
    

    为我工作:)

        2
  •  1
  •   RavinderSingh13 Nikita Bakshi    6 年前

    sed -n '/^app:/s/\(.*:\)\([^,]*\),/\2/p'  Input_file
    

    输出如下。

    my_super_app
    

    编辑:如果你同意的话 awk 然后试试下面的方法。

    awk -F'[:,]' '/^app:/{print $3}'  Input_file
    

    附言:你生活的改善 sed 命令将为:无需使用 cat grep 作为

        3
  •  0
  •   NeronLeVelu    6 年前

    sed -e '/.*app: :\(.*\),.*/!d' -e 's//\1/' my_file
    # or
    sed -n 's/.*app: :\(.*\),.*/\1/p' my_file