繁体   English   中英

使用Grep Sed或Awk搜索和替换EDL文件中的行

[英]Using Grep Sed or Awk to search and replace lines in EDL file

本质上,我正在尝试使用sed,grep或awk进行以下操作:

001  AX       V     C        00:00:32:09 00:00:40:19 00:00:00:00 00:00:08:10
* FROM CLIP NAME: 001_M04-1008rev.mov

002  AX       V     C        00:00:20:04 00:00:30:11 00:00:08:10 00:00:18:17
* FROM CLIP NAME: 001_M04-1011rev.mov

003  AX       V     C        00:00:15:00 00:00:26:05 00:00:18:17 00:00:29:22
* FROM CLIP NAME: 001_M04-1012rev.mov

004  AX       V     C        00:00:20:01 00:00:30:13 00:00:29:22 00:00:40:10
* FROM CLIP NAME: 001_M04-1027rev.mov

005  AX       V     C        00:00:24:22 00:00:30:09 00:00:40:10 00:00:45:21
* FROM CLIP NAME: 001_M04-1028rev.mov

006  AX       V     C        00:00:38:04 00:00:49:03 00:00:45:21 00:00:56:20
* FROM CLIP NAME: 001_M04-1029rev.mov

对此:

001  1008rev       V     C        00:00:32:09 00:00:40:19 00:00:00:00 00:00:08:10
* FROM CLIP NAME: 001_M04-1008rev.mov

002  1011rev       V     C        00:00:20:04 00:00:30:11 00:00:08:10 00:00:18:17
* FROM CLIP NAME: 001_M04-1011rev.mov

003  1012rev       V     C        00:00:15:00 00:00:26:05 00:00:18:17 00:00:29:22
* FROM CLIP NAME: 001_M04-1012rev.mov

004  1027rev       V     C        00:00:20:01 00:00:30:13 00:00:29:22 00:00:40:10
* FROM CLIP NAME: 001_M04-1027rev.mov

005  1028rev       V     C        00:00:24:22 00:00:30:09 00:00:40:10 00:00:45:21
* FROM CLIP NAME: 001_M04-1028rev.mov

006  1029rev       V     C        00:00:38:04 00:00:49:03 00:00:45:21 00:00:56:20
* FROM CLIP NAME: 001_M04-1029rev.mov

有什么建议么? 基本上,我将“ .mov”之前的最后7个字符替换为上一行中的“ AX”。

这是使用awk的一种方法:

awk '{ sub($2, substr($NF, length($NF) - 10, 7)) }1' RS= ORS="\n\n" file

这是使用perl的一种方法:

perl -00 -pae 's/$F[1]/substr($F[-1], -11, 7)/e' file

请注意,AWK解决方案将为您提供尾随的换行符,而Perl解决方案则不会。 这是否相关是另一回事。

这是一个潜在的awk解决方案:

awk 'BEGIN { buf=""; } /AX/ { buf=$0; } /.mov$/ { match($0, /\-([^\-\.]+).mov/, n); gsub("AX", n[1], buf); print buf,"\n",$0,"\n"; }' < test.txt

输出以下内容:

001  1008rev       V     C        00:00:32:09 00:00:40:19 00:00:00:00 00:00:08:10
 * FROM CLIP NAME: 001_M04-1008rev.mov

002  1011rev       V     C        00:00:20:04 00:00:30:11 00:00:08:10 00:00:18:17
 * FROM CLIP NAME: 001_M04-1011rev.mov

003  1012rev       V     C        00:00:15:00 00:00:26:05 00:00:18:17 00:00:29:22
 * FROM CLIP NAME: 001_M04-1012rev.mov

004  1027rev       V     C        00:00:20:01 00:00:30:13 00:00:29:22 00:00:40:10
 * FROM CLIP NAME: 001_M04-1027rev.mov

005  1028rev       V     C        00:00:24:22 00:00:30:09 00:00:40:10 00:00:45:21
 * FROM CLIP NAME: 001_M04-1028rev.mov

006  1029rev       V     C        00:00:38:04 00:00:49:03 00:00:45:21 00:00:56:20
 * FROM CLIP NAME: 001_M04-1029rev.mov

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM