UNIX:如何从排序结果中选择特定的列值?

时间:2016-01-29 09:05:20

标签: shell terminal youtube-dl

我尝试按分辨率对youtube-dl -F的输出进行排序,并将最高res结果的格式代码分配给变量,以使用youtube-dl -f下载文件。我可以按照youtube-dl -F https://www.youtube.com/watch\?v\=yKNxeF4KMsY | sort -b -r -k3

对第一步的输出进行排序

通过此示例,具有最高视频分辨率的格式代码为43.如何将该值分配给变量并在我正在编写的脚本中进一步使用该值?

1 个答案:

答案 0 :(得分:1)

您可以使用以下命令获取格式代码:

format_code=$(youtube-dl -F https://www.youtube.com/watch\?v\=yKNxeF4KMsY | sort -b -r -k3 -n | head -1 | cut -d" " -f1)

这将根据第3个字段(分辨率)对输出进行排序,使用head命令获取第一行,然后使用cut获取第一个字段(格式代码)

$ echo $format_code
> 43

要在Python中获得所需的输出:

from subprocess import check_output

output = check_output("youtube-dl -F https://www.youtube.com/watch?v=yKNxeF4KMsY | sort -b -r -k3 -n | head -1 | cut -d' ' -f1", shell=True)

format_code = output.strip() # to remove the trailing '\n'
# or simply format_code = int(output) if you want an integer

然后format_code变量将具有所需的值,在这种情况下为43