我在awk程序中有这个数组。我想将此数组存储到一个文件中,以便稍后进行其他操作。你能帮忙吗? 如果有人显示一个简单的一行awk程序来执行此任务,我们非常感激。 基本上我有一个包含30多行的文件,每行包含以下格式的数据 - 文本1; [标签]]; tag_comments
我的脚本只提取标记并将其存储在数组中。
BEGIN{
tags_file = "tags.dat";
tag_cnt = 0;
while(getline x < tags_file > 0){
n = split(x,a,/\;/);
if(n >= 3){
tag_stripped = substr(a[2],3,length(a[2])-4)
tag[tag_cnt] = tag_stripped;
tag_cnt++;
}
}
close(tags_file)
}
EXAMPLE of file--line 1--john;[[smith]];john is a vegetarian
line 2- mark;[[henry]];mark henry is a wrestler
line 3- john;[[travolta]]; john travolta has acted in Pulp fiction.
etc....
我在这里提取史密斯,亨利和特拉沃尔塔并将它们存储在一个阵列中。我想将这个数组的内容存储在一个文本文件中,以便进一步处理,因为我从另一个shell脚本调用这个awk脚本。
答案 0 :(得分:0)
在程序的内部if
中:
if(n >= 3){
tag_stripped = substr(a[2],3,length(a[2])-4)
tag[tag_cnt] = tag_stripped;
tag_cnt++;
}
您只需添加以下内容:
print tag_stripped > tag_output
见here。不过,这似乎是重新实现了awk
在 awk中的。以下是您的目标,或者上面的例子中有很多缺失?
~$> cat test.input
john;[[smith]];john is a vegetarian
mark;[[henry]];mark henry is a wrestler
john;[[travolta]]; john travolta has acted in Pulp fiction.
~$> awk -F'(\\[\\[|\\]\\])' '{ print $2 }' test.input >test_output
~$> cat test_output
smith
henry
travolta
此外,也许sed
可以:
sed 's/^[^[]*\[\[//; s/\]\][^]]*$//;' test.input >test.output