bash - Grep Result 过滤双重结果
问题描述
我只需要从 grep 中提取第一个 Ita 音频:
ffprobe -i La.casa.nera.1991.FULL.HD.1080p.DTS+AC3.ITAENG.SUB.LFi.mkv 2>&1 | grep "Stream" | grep -v "Video" | grep -v "Subtitle" | grep "ac3" | egrep "(Ita)|(ita)|Italian|Italiano|italian|italiano|Eng|eng|English|english"
结果 :
Stream #0:2(ita): Audio: ac3, 48000 Hz, stereo, fltp, 640 kb/s
Stream #0:4(ita): Audio: ac3, 48000 Hz, stereo, fltp, 640 kb/s
Stream #0:6(eng): Audio: ac3, 48000 Hz, stereo, fltp, 640 kb/s
我只需要像这样的第一个 ita 音频:
Stream #0:2(ita): Audio: ac3, 48000 Hz, stereo, fltp, 640 kb/s
Stream #0:6(eng): Audio: ac3, 48000 Hz, stereo, fltp, 640 kb/s
可以提供帮助,最好的问候
解决方案
目前还不清楚你在问什么。对于您拥有的样本,uniq -s12
可以解决问题:
ffprobe -i La.casa.nera.1991.FULL.HD.1080p.DTS+AC3.ITAENG.SUB.LFi.mkv 2>&1 | grep "Stream" | grep -v "Video" | grep -v "Subtitle" | grep "ac3" | egrep "(Ita)|(ita)|Italian|Italiano|italian|italiano|Eng|eng|English|english" | uniq -s12
Stream #0:2(ita): Audio: ac3, 48000 Hz, stereo, fltp, 640 kb/s
Stream #0:6(eng): Audio: ac3, 48000 Hz, stereo, fltp, 640 kb/s
解释:
-s
指示 uniq 跳过前 12 个字符,因此 uniqnes 将仅考虑(ita): Audio: ac3, 48000 Hz, stereo, fltp, 640 kb/s
但是,如果 2 个意大利流具有不同的频率或其他属性,则可能需要 awk 命令:
awk '!a[substr($2,6,length($2)-7)]++'
Stream #0:2(ita): Audio: ac3, 48000 Hz, stereo, fltp, 640 kb/s
Stream #0:6(eng): Audio: ac3, 48000 Hz, stereo, fltp, 640 kb/s
解释:
$2
#0:2(ita)
例如选择第二个字段substr
提取ita
部分(因为我不确定命令输出,我假设它ita
可能具有可变长度!a[..]
- 仅当a
字典还没有条目时打印
推荐阅读
- javascript - 如何创建一个保持不变且在 Javascript 中不变的随机数?
- r - 根据多个其他列更改各个列 - R
- flutter - Flutter 构建失败并出现致命错误:找不到“Flutter/Flutter.h”文件
- hive - 如何将所有映射器加载到 HIVE 表中?
- python - 从调用 .txt 文件中删除 /n python
- c - 使用 Raspberry Pi 和 BCM2835 库写入 LCD 屏幕时出现问题
- python - 狮身人面像中的“没有名为'气流'的模块”
- sql - 如何用表中的值进行替换
- rust - 生命周期和实现克隆的问题
- python-3.x - Python3.8多进程键盘/鼠标监听器不是持久的