[英]MAWK: Store match() in variable
我尝试使用 MAWK,其中match()
内置函数没有变量的第三个值:
match($1, /9f7fde/) {
substr($1, RSTART, RLENGTH);
}
见文档。
以后我想像这样构造输出时,如何将此输出存储到名为var
的变量中?
EDIT2 - 完整示例:
输入文件结构:
<iframe src="https://vimeo.com/191081157" frameborder="0" height="481" width="608" scrolling="no"></iframe>|Random title|Uploader|fun|tag1,tag2,tag3
<iframe src="https://vimeo.com/212192268" frameborder="0" height="481" width="608" scrolling="no"></iframe>|Random title|Uploader|fun|tag1,tag2,tag3
解析器.awk:
{
Embed = $1;
Title = $2;
User = $3;
Categories = $4;
Tags = $5;
}
BEGIN {
FS="|";
}
# Regexp without pattern matching for testing purposes
match(Embed, /191081157/) {
Id = substr(Embed, RSTART, RLENGTH);
}
{
print Id"\t"Title"\t"User"\t"Categories"\t"Tags;
}
预期输出:
191081157|Random title|Uploader|fun|tag1,tag2,tag3
我想在match()
函数之外调用Id
变量。
MAWK版本:
mawk 1.3.4 20160930
Copyright 2008-2015,2016, Thomas E. Dickey
Copyright 1991-1996,2014, Michael D. Brennan
random-funcs: srandom/random
regex-funcs: internal
compiled limits:
sprintf buffer 8192
maximum-integer 2147483647
显而易见的答案似乎是
match($1, /9f7fde/) { var = "9f7fde"; }
但更一般的是:
match($1, /9f7fde/) { var = substr($1, RSTART, RLENGTH); }
让我们说这条线
.....vimeo.com/191081157" frameborder="0" height="481" width="608" scrolling="no">随机标题|上传者|乐趣|tag1,tag2,tag3
{mawk/mawk2/gawk} 'BEGIN { OFS = "";
FS = "(^.+vimeo[\056]com[\057]|[\042] frameborder.+[\057]iframe[>])" ;
} (NF < 4) || ($2 !~ /191081157/) { next } ( $1 = $1 )'
\\056 是点 ( . ) \\057 是正斜杠 ( / ) 而 \\042 是双直引号 ( " )
如果根本不匹配,请移至下一行。 否则,使用字段分隔符的力量吞噬掉所有不需要的部分。 $1 = $1 将收集您不需要的前缀和其余的 HTML 标签。
$1 = $1 的赋值操作也将返回 true,为布尔求值提供输入以供打印。 这样,您根本不需要 match() 或 substr()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.