Shell 到 Bash 脚本

Shell 到 Bash 脚本
fld=$(mediainfo Fixing\ One\ of\ Linux\'s\ Biggest\ Flaws.mp4 | awk -F " : " 'NR==10 {print $2}'); 
mkdir "$fld"

我正在尝试从 mediainfo 的输出中获取 Performer。第 10 行包含:

Performer                                : The Linux Cast

在这个文件中,我只想要“The Linux Cast”本身。我无法让它在 bash 脚本中工作。我设置了内联文件分隔符,但大括号扩展让我失望。使用 youtube-dl 下载并使用 mediainfo 读取的文件。

不明白为什么代码在 shell 中不起作用。我可能应该使用 sed 或其他核心实用程序。

只是尝试由内容创建者组织文件。

答案1

不要依赖行号,而是匹配Performer

fld=$(
  mediainfo "Fixing One of Linux's Biggest Flaws.mp4" |
    sed -n 's/^Performer[[:space:]]*:[[:space:]]*//p'
)

或者使用 GNU grep

fld=$(
  mediainfo "Fixing One of Linux's Biggest Flaws.mp4" |
    grep -Po '^Performer\s*:\s*\K.*'
)

或者使用exiftool

fld=$(
  exiftool -q -p '$Artist' "Fixing One of Linux's Biggest Flaws.mp4"
)

相关内容