Sed 如何在unix中提取多行文字?
我想从以下字符串中提取一些特定单词:-Sed 如何在unix中提取多行文字?,sed,awk,pattern-matching,design-patterns,Sed,Awk,Pattern Matching,Design Patterns,我想从以下字符串中提取一些特定单词:- Exported Layer : missing_hello Comment : Total Polygons : 20000 (reported 100). 我想从上面的字符串中提取单词missing_hello和2000,并将其显示为 missing_hello : 20000 如何在unix中执行此操作?在awk中: 如果输入是垃圾,那么输出将太多。如果字段可以包含冒号,生活就会变得更混乱 在sed中: 此sed版本中字段中的冒号没
Exported Layer : missing_hello
Comment :
Total Polygons : 20000 (reported 100).
我想从上面的字符串中提取单词missing_hello和2000,并将其显示为
missing_hello : 20000
如何在unix中执行此操作?在awk中:
如果输入是垃圾,那么输出将太多。如果字段可以包含冒号,生活就会变得更混乱
在sed中:
此sed版本中字段中的冒号没有问题
现在已在MacOS X 10.6.7上测试。两个脚本都在“总多边形数”行中的数字后面包含注释。两个脚本都可以很容易地修改为只打印数字而忽略注释。这将有助于对所有可能的格式有一个精确的定义
我可能会使用Perl或Python来完成这项工作;字段拆分非常混乱,可以从这些语言中更好的功能中获益。在awk中:
如果输入是垃圾,那么输出将太多。如果字段可以包含冒号,生活就会变得更混乱
在sed中:
此sed版本中字段中的冒号没有问题
现在已在MacOS X 10.6.7上测试。两个脚本都在“总多边形数”行中的数字后面包含注释。两个脚本都可以很容易地修改为只打印数字而忽略注释。这将有助于对所有可能的格式有一个精确的定义
我可能会使用Perl或Python来完成这项工作;字段拆分非常混乱,可以从这些语言中更好的功能中获益。请参阅本指南-
Sed当然是一个值得学习的工具。我将特别看一下标题为“使用\1保留部分模式”和“使用多行”的章节。看一下本指南-
Sed当然是一个值得学习的工具。我将特别关注标题为“使用\1保留部分模式”和“使用多行”的章节。如果您有perl,您可以使用以下内容:
use strict;
use warnings;
my $layer;
my $polys;
while (<>) {
if ($_ =~ m{^Exported \s Layer \s : \s (\S+)}xms) {
$layer = $1;
next;
}
if ($_ =~ m{^Total \s Polygons \s : \s (\d+)}xms) {
$polys = $1;
}
if (defined $layer && defined $polys) {
print "$layer : $polys\n";
$layer = $polys = undef;
}
}
如果您有perl,您可以使用:
use strict;
use warnings;
my $layer;
my $polys;
while (<>) {
if ($_ =~ m{^Exported \s Layer \s : \s (\S+)}xms) {
$layer = $1;
next;
}
if ($_ =~ m{^Total \s Polygons \s : \s (\d+)}xms) {
$polys = $1;
}
if (defined $layer && defined $polys) {
print "$layer : $polys\n";
$layer = $polys = undef;
}
}
假设每次只缺一个字,你就可以:
perl -lane '$el=$F[3] if(/Exported Layer/); print "$el: $F[3]" if(/Total Polygons/);'
假设每次只缺一个字,你就可以:
perl -lane '$el=$F[3] if(/Exported Layer/); print "$el: $F[3]" if(/Total Polygons/);'
我搞错了。我没有读undef行…我会删除我的主要评论。我搞错了。我没有读undef行…我将删除我的主要评论。