我正在尝试使用此脚本从文件列表中获取更新查询。我需要单独包含“更新”而不是“更新”或“UpdateSQL”的行我们知道所有更新查询都包含我正在使用的集合同样,我需要删除像Updated和UpdatedSQL这样的案例,任何人都可以帮忙吗?
nawk -v file="$TEST" 'BEGIN{RS=";"}
/[Uu][Pp][Dd][Aa][Tt][Ee] .*[sS][eE][tT]/{ gsub(/.*UPDATE/,"UPDATE");gsub(/.*Update/,"Update");gsub(/.*update/,"update");gsub(/\n+/,"");print file,"#",$0;}
' "$TEST" >> $OUT
答案 0 :(得分:1)
在没有[Uu]
的情况下,这对我来说更具可读性,并且不需要grep
:
{ line=tolower($0); if (line ~ /update .*set/ && line !~ /updated|updatesql/) { gsub ...
答案 1 :(得分:0)
您可以先尝试使用grep,(我假设您使用的是Solaris。)
grep -i "update.*set" "$TEST" | egrep -vi "updatesql|updated" | nawk .....