awk:如果缺失添加一行
问题描述:
我有一个处理.ICS日历文件的awk脚本。 如果缺少,我需要添加ATTENDEE行。awk:如果缺失添加一行
我已经有了一个脚本,它解析了所有考虑事项的脚本,只有我需要CHECKPARM条件才能解决。如果它不存在,我需要添加ATTENDEE。
/BEGIN:VEVENT/ { cache = 1; }
/CHECKPARM/ {
if(index($0, var))
printf("%s", cached_lines);
else
drop = 1;
cached_lines = "";
cache = 0;
}
# this doesn't work
#!~ /ATTENDEE/ {
# printf ("ATTENDEE: %s", organizer);
#}
cache {
cached_lines = cached_lines $0 "\n";
next;
};
!drop { print; }
/END:VEVENT/ { drop = 0; }
答
尝试使用标志,如果行,则设置它,如果没有,添加一行。 类似这样的:
/ATTENDEE/ {att = 1}
!att {
printf ("ATTENDEE: %s\n", organizer)
}
严格关于编程的问题最好放在*上。我会尝试在这里移动这个。 – 2013-04-08 14:27:20
删除正确的否定匹配语法的波形符号。您可能需要使用弗雷德里克皮尔的答案中的标志来控制何时打印信息。否则,否定匹配对于不包含字符串的每行都是正确的,并且信息可能会多次打印。 – 2013-04-11 14:55:10