使用单个 ♪ 音符从字幕中删除行,而不删除所有音符

问题描述 投票:0回答:1

我正在尝试找出一种方法来从字幕中删除包含单个音符的行,而不像查找/替换场景那样删除所有音符。我对 awk、grep 等没有什么运气......

示例 TXT

01:12.95,0:01:15.12 嗯嗯。是的。

01:23.52,0:01:30.53♪

01:41.72,0:01:43.98 你确定我不能让你和我一起去吗?

示例 TXT 结束

我不想扔掉的东西的示例。

0:07:07.91,0:07:09.77 ♪ 做不到,伙计。♪ 呃,做吧。

0:07:09.77,0:07:12.09 ♪ 这是那些程序员的笑话之一,一个无法解决的问题。 ♪

0:07:12.09,0:07:14.02 已经解决了。 ♪ 不,你没有。 ♪

样本结束

我尝试了这里找到的一些样本,但它们基本上删除了所有音符,这并不是我想要的。

sed '/^.$/d' <--- supposed to delete lines with only 1 character in it but I believe it's reading the time stamps as characters so no-go on that one.

除了上面的例子我真的不知道从哪里开始。

linux bash awk grep
1个回答
0
投票

您的输入似乎由以两个时间戳开头的行组成,用逗号分隔,然后是空格字符,然后是一些文本。您要删除的行似乎正是文本所在的行

在 shell 脚本中,您可以使用

while
read
来解析这些行,并根据条件打印它们:

while read -r time text; do [ "$text" == "♪" ] || printf '%s %s\n' "$time" "$text"; done

使用 awk,您可以测试字段的数量和第二个字段的内容:

awk 'NF!=2 || $2!="♪"'
© www.soinside.com 2019 - 2024. All rights reserved.