json - Grep命令问题-程序输出中的Grep文本?

标签 json bash youtube grep youtube-dl

我正在尝试从json文件youtube-dl中提取信息,并将一些信息从其中提取到.txt文件中。
下载视频时,使用youtube-dl的输出示例。

[info] Writing video description to: /Users/ACCOUNT/Downloads/Rick Astley - Never Gonna Give You Up (Video).description
[info] Writing video description metadata as JSON to: /Users/ACCOUNT/Downloads/Rick Astley - Never Gonna Give You Up (Video).info.json
我的想法
  • Grep .json和.description文件路径,可在以后的grep命令中使用。
  • 运行以下脚本的工作版本,并将新文本添加到.description文件中的描述文本上方。
  • (将.description重命名为.txt)

  • 我更喜欢这种方法,因为youtube-dl仅需要运行一次。
    如果还有其他通用命令可以在Mac和Linux上作为grep使用,可以使其变得简单,那么我认为使用它们代替grep没问题。

    问题
  • 如何grep文件路径并在脚本示例中下面描述的其他命令中使用它?
  • 如何运行下面的脚本,但是将所有信息添加到该文本文件中当前描述文本上方?
  • 当它从json文件中获取信息时,它也会在前后获得“”。因此,视频名称变为:"VIDEO NAME",但只希望它为VIDEO NAME
  • 如何从json文件中复制标签?标签在.json文件:"tags": ["music", "video", "classic"]中看起来像这样。要获取"music", "video", "classic"

  • 脚本示例
        txtfile="$GREP_DESCRIPTION_FROM_YOUTUBE-DL_OUTPUT"
        jsonfile="$GREP_JSON_FROM_YOUTUBE-DL_OUTPUT"
    
        echo TITLE >> $txtfile
        grep -o '"title": *"[^"]*"' $jsonfile | grep -o '"[^"]*"$' >> $txtfile
        echo \ >> $txtfile
        
        echo CHANNEL >> $txtfile
        grep -o '"uploader": *"[^"]*"' $jsonfile | grep -o '"[^"]*"$' >> $txtfile
        echo \ >> $txtfile
        
        echo CHANNEL URL >> $txtfile
        grep -o '"uploader_url": *"[^"]*"' $jsonfile | grep -o '"[^"]*"$' >> $txtfile
        echo \ >> $txtfile
        
        echo UPLOAD DATE >> $txtfile
        grep -o '"upload_date": *"[^"]*"' $jsonfile | grep -o '"[^"]*"$' >> $txtfile
        echo \ >> $txtfile
        
        echo TAGS >> $txtfile
        grep -o '"tags": *"[^"]*"' $jsonfile | grep -o '"[^"]*"$' >> $txtfile
        echo \ >> $txtfile
        
        echo URL >> $txtfile
        echo $url >> $txtfile
        echo \ >> $txtfile
        
        echo DESCRIPTION >> $txtfile
    

    最佳答案

    谢谢巴默!这回答了我四个问题中的三个。
    剩下的是,我想不通的是如何从youtube-dl输出中获取json文件的位置,如何使其在脚本中工作,以及如何在同一目录中以.txt结尾的.txt文件。
    像这样:

  • Grep [info] Writing video description metadata as JSON to: 之后的所有内容,即/Users/ACCOUNT/Downloads/Rick Astley - Never Gonna Give You Up (Video).info.json
  • 使该$jsonfile
  • 从点1获得相同的输出,将扩展名(最后一个.DOT之后的所有内容)替换为.txt,使$txtfile

  • 用jq更新了脚本
    #! /bin/bash
    
        txtfile="textfile.txt"
        jsonfile="jsonfile.json"
    
        echo - TITLE - >> $txtfile
        jq -r '.title' $jsonfile >> $txtfile
        echo \ >> $txtfile | echo \ >> $txtfile
        
        echo - CHANNEL - >> $txtfile
        jq -r '.uploader' $jsonfile >> $txtfile
        echo \ >> $txtfile | echo \ >> $txtfile
        
        echo - CHANNEL URL - >> $txtfile
        jq -r '.uploader_url' $jsonfile >> $txtfile
        echo \ >> $txtfile | echo \ >> $txtfile
        
        echo - UPLOAD DATE - >> $txtfile
        jq -r '.upload_date' $jsonfile >> $txtfile
        echo \ >> $txtfile | echo \ >> $txtfile
        
        echo - URL - >> $txtfile
        jq -r '.webpage_url' $jsonfile >> $txtfile
        echo \ >> $txtfile | echo \ >> $txtfile
        
        echo - TAGS - >> $txtfile
        jq -r -c '.tags' $jsonfile >> $txtfile
        echo \ >> $txtfile | echo \ >> $txtfile
        
        echo - DESCRIPTION - >> $txtfile
        jq -r '.description' $jsonfile >> $txtfile
    

    关于json - Grep命令问题-程序输出中的Grep文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63731320/

    相关文章:

    python - 为什么单引号( ' ) and double quote( ")在 python 的 json 模块中得到不同的结果?

    ruby-on-rails - Rails json 输出载波缩略图版本

    json - Swift 4 可编码 : the keys are Int array in JSON data

    css - Wordpress - 在主页上更改视频 (iframe) 尺寸

    javascript - 从组件更新路由模型

    php - 使用 PHP 解析这个奇怪的 JSON

    xml - 在 bash 中基于 XML 内容验证获取内容

    bash - 反向视频似乎不起作用

    perl - 从 Perl 或 shell 中的颠覆转储文件中获取最高修订号

    python - 从YouTube channel 逐页获取所有视频