如何通过命令行实用程序操作文本:grep、cut、awk、sed 或 BBEdit(Grep 查找选项)

Posted

技术标签:

【中文标题】如何通过命令行实用程序操作文本:grep、cut、awk、sed 或 BBEdit(Grep 查找选项)【英文标题】:How to manipulate text via command-line utilities: grep, cut, awk, sed or BBEdit (Grep Find Option) 【发布时间】:2020-06-24 19:34:36 【问题描述】:

我正在为一个 srt 文件而苦苦挣扎。我有一个非常长的字幕文件,我想自动在一行上获取字幕文本,而不是像原始文件中的两行(或最差的)三行。我尝试了许多解决方案,决定使用 BBEdit,并通过 Grep Find Option 找到解决我的问题的方法,但是,正如我所说,我陷入了困境!

在这里,我向您展示我的问题的一个简短示例:

原创

1
00:00:00,600 --> 00:00:03,760
Block 1 - line one
Block 1 - line one

2
00:00:03,960 --> 00:00:07,120
Block 2 - line one
Block 2 - line two
Block 2 - line three

我想要什么:

1
00:00:00,600 --> 00:00:03,760
Block 1 - line one Block 1 - line one

2
00:00:03,960 --> 00:00:07,120
Block 2 - line 1 Block 2 - line two Block 2 - line three

实际上,如果您找到不同程序的解决方案,我也会很高兴!

提前致谢!

【问题讨论】:

【参考方案1】:
$ gawk '
>     /Block/  block = block sep $0; sep = " " 
>     !/Block/  if (block != "") 
>                    print block
>                    block = sep = "" 
>                print $0 
>     END  if (block != "") print block 
> ' << EOF
> 1
> 00:00:00,600 --> 00:00:03,760
> Block 1 - line one
> Block 1 - line one
>
> 2
> 00:00:03,960 --> 00:00:07,120
> Block 2 - line one
> Block 2 - line two
> Block 2 - line three
> EOF
1
00:00:00,600 --> 00:00:03,760
Block 1 - line one Block 1 - line one

2
00:00:03,960 --> 00:00:07,120
Block 2 - line one Block 2 - line two Block 2 - line three

【讨论】:

以上是关于如何通过命令行实用程序操作文本:grep、cut、awk、sed 或 BBEdit(Grep 查找选项)的主要内容,如果未能解决你的问题,请参考以下文章

[Linux] Linux常用文本操作命令整理

【现学现忘&Shell编程】— 30.cut列提取命令

文本操作 (ls,grep,head,cut)

从文件或 STDIN 读取

Linux Shell处理文本的命令大全

grep,cut,wc,sort,diff,uniq,patch命令