我有一个在awk
中运行良好的正则表达式,但首先我需要将正则表达式存储在shell变量中valLat="^[-+]?(([0-9]+[d])?([0-9]+['])?([0-9]*[.]?[0-9]+[\"])?|[0-9]*[.]?[0-9]+)[NnSs]?$"
然后像这样将shell变量传递给awk
变量echo 39d41\'17.766\"N | awk -v valLat=$valLat '{ if ($1 ~ valLat) print $1; else print "erro" }' 39d41'17.766"N
这是可行的,但我不想使用shell变量。我尝试在特殊字符前使用转义符“\”,但没有成功。
3条答案
按热度按时间kyks70gy1#
将脚本放入一个文件中,并使用awk -f或使用ANSI转义序列或为单引号定义一个变量,例如。使用
\x27
作为单引号:33qvvth12#
There is no way to escape single-quotes inside of single-quoted strings in bash.所以你应该对awk脚本使用双引号。
xytpbqjk3#
不需要“存储到文件”:使用octals
壳变量
输入匹配