在AWK Shell

时间:2017-01-21 18:23:09

标签: shell

awk -F':' 'BEGIN{IGNORECASE=1}/' '$1~/'$name'/' $file

似乎有“失控的正则表达式”错误

如何为这种情况添加ignorecase?

 John:English:95:May
 May:Math:99:John
 Peter:Math:55:John
 May:Sci:76:John

我的$ file数据

Please enter your name: may

用户输入

May:Math:99:Joh
May:Sci:76:John

预期结果

1 个答案:

答案 0 :(得分:2)

您可以使用> l[2::-1] [3, 2, 1] > l[0::-1] [1] 兼容的字符串函数POSIXtolower()topper()中的不区分大小写的查找,而不是使用Awk特定的{{} 1}}这不能提供灵活性来改变特定需求的情况,但仅作为一个整体。

假设您在GNU Awk变量中从用户输入中读取了IGNORECASE,您可以这样做,

$name

(或)如果您打算使用bash,请执行类似

的操作
awk -F":" -v name="$name" 'tolower($1) ~ tolower(name)' file
May:Math:99:John
May:Sci:76:John

这假设您正在使用IGNORECASE在shell命令中读取用户输入,并将值存储在shell上下文中的变量awk -F":" -v name="$name" 'BEGIN{IGNORECASE=1} $1 ~ name' file May:Math:99:John May:Sci:76:John 中。