如何修改这个 sed awk 命令,以便输出到选择的文件?

金栈

我正在使用此 SO 答案中的最后一个命令https://stackoverflow.com/a/54818581/80353

cap()(cd /tmp;rm -f *.vtt;youtube-dl --skip-download --write-auto-sub "$1";sed '1,/^$/d' *.vtt|sed 's/<[^>]*>//g'|awk -F. 'NR%8==1{printf"%s ",$1}NR%8==3'|tee cap)

这个命令目前做什么

  1. 此命令会将 youtube 视频的字幕下载为 .vtt 文件和
  2. 然后在终端上打印出 .vtt 文件的简化版本

此命令按描述工作。

如何使用这个命令

在终端中,我将运行上述命令一次,然后运行 cap $youtube_url

我喜欢的东西

我想修改原始cap()函数,使原始行为保留一个额外的部分

  1. 此命令会将 youtube 视频的字幕下载为 .vtt 文件(未更改)
  2. 然后将 .vtt 文件的简化版本打印到另一个文件中,该文件声明为参数 $2(已更改)

我希望如何调用新命令

最初,我将原始命令称为

cap $youtube_url

现在我喜欢这样做

cap $youtube_url $relative_or_absolute_path_of_text_or_markdown_file

如何修改原始 cap 命令以达到我想要的结果?

拉文德辛格13

考虑到您想在屏幕上看到输出以及您也想将输出保存到输出文件中,如果是这种情况,请尝试以下操作。

cap()(cd /tmp;rm -f *.vtt;youtube-dl --skip-download --write-auto-sub "$1";sed '1,/^$/d' *.vtt|sed 's/<[^>]*>//g'|awk -F. 'NR%8==1{printf"%s ",$1}NR%8==3'|tee -a "$2")

或以非一种衬垫形式使用:

cap()(cd /tmp;rm -f *.vtt;youtube-dl --skip-download --write-auto-sub "$1";\
sed '1,/^$/d' *.vtt|sed 's/<[^>]*>//g'|awk -F. 'NR%8==1{printf"%s ",$1}NR%8==3'\
|tee -a "$2")

请确保您在变量中提供了完整的路径 eg--> relative_or_absolute_path_of_text_or_markdown_file="/full/path/output_file.txt"etc 只是一个例子。我无法测试它,因为我的盒子里没有 vtt 文件等的机制。

如果您不想在屏幕上打印信息而只想将输出保存到输出文件中,那么作为@oguz ismail 的注释使用,tee "$2"而不是tee -a "$2"像我上面显示的那样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章