Scripting awk:如果缺少,请添加一行
我有一个处理.ICS日历文件的awk脚本。 如果缺少与会者行,我需要添加该行 我已经有了一个脚本,它解析了所有事件,只考虑了给定CHECKPARM条件所需的事件。如果与会者尚未出现,我需要添加该与会者Scripting awk:如果缺少,请添加一行,scripting,awk,Scripting,Awk,我有一个处理.ICS日历文件的awk脚本。 如果缺少与会者行,我需要添加该行 我已经有了一个脚本,它解析了所有事件,只考虑了给定CHECKPARM条件所需的事件。如果与会者尚未出现,我需要添加该与会者 /BEGIN:VEVENT/ { cache = 1; } /CHECKPARM/ { if( index( $0, var ) ) printf( "%s", cached_lines ); else drop = 1; cached_l
/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)
}
严格来说与编程有关的问题最好放在StackOverflow上。我将尝试将此项移到那里。删除波浪号以获得正确的否定匹配语法。您可能需要使用Fredrik Pihl回答中的标志,以便控制信息何时打印。否则,对于不包含字符串的每一行,否定匹配将为真,并且信息可能会被打印多次。