使用shell脚本从文件列表中单独选择更新查询

时间:2010-04-08 07:59:15

标签: shell

我正在尝试使用此脚本从文件列表中获取更新查询。我需要单独包含“更新”而不是“更新”或“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

2 个答案:

答案 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 .....