我正在尝试找出一种方法来从字幕中删除包含单个音符的行,而不像查找/替换场景那样删除所有音符。我对 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.
除了上面的例子我真的不知道从哪里开始。
您的输入似乎由以两个时间戳开头的行组成,用逗号分隔,然后是空格字符,然后是一些文本。您要删除的行似乎正是文本所在的行
♪
。
在 shell 脚本中,您可以使用
while
和 read
来解析这些行,并根据条件打印它们:
while read -r time text; do [ "$text" == "♪" ] || printf '%s %s\n' "$time" "$text"; done
使用 awk,您可以测试字段的数量和第二个字段的内容:
awk 'NF!=2 || $2!="♪"'