下面的命令可以正常工作。
# some command | awk '/(\<^create\>|\<^alter\>|\<^drop\>)/,/;/'
create table todel1 (id int) max_rows=2
/*!*/;
alter table todel1 engine=InnoDB
/*!*/;
create database common
/*!*/;
create database rules
/*!*/;
但它只匹配小写的"create“、"alter”等。我想在awk语句中使用IGNORECASE开关,以便它将返回搜索词的所有实例。
发布于 2011-03-08 14:01:58
将IGNORECASE = 1;
添加到awk命令的开头,如下所示:
bash-3.2$ echo "Create" | awk '/^create/;'
bash-3.2$ echo "Create" | awk 'IGNORECASE = 1;/^create/;'
Create
发布于 2015-12-07 19:11:36
下面的行将执行OR测试,而不是AND测试:
echo -e "Create\nAny text" | awk 'IGNORECASE = 1;/^create/;'
Create
Create
Any text
BEGIN这个特殊的单词解决了这个问题:
echo -e "Create\nAny text" | awk 'BEGIN{IGNORECASE = 1}/^create/;'
Create
希望这能有所帮助。
塞巴斯蒂安。
发布于 2012-07-13 18:05:15
对于那些使用IGNORECASE
标志无用的旧awk
的用户:
选项1
echo "CreAte" | awk '/^[Cc][Rr][Ee][Aa][Tt][Ee]/'
选项2 (感谢@mwfearnley)
echo "CreAte" | awk 'tolower($0) ~ /^create/'
https://stackoverflow.com/questions/5228892
复制相似问题