正则表达式出错

离开

我正在使用Bash脚本来使用awk查找:(0010,0080)awk通常会查找括号之间用逗号分隔的任何数字值。我已尽我所能,但将其附加到文本文件后仍然无法获得任何结果)。我的正则表达式是:

awk '/\([0-9]{4},[0-9]{4}\)/' dcmResults.txt >> ~/export/"$1"/tagResults.txt

我已经做了几乎所有使用括号的转义字符的变体,包括不使用任何转义字符,并且在附加到文本文件时没有得到任何结果。有人可以告诉我我做错了吗?

UPDATE,这是整个脚本的样子:

#!/bin/bash
echo "Enter SUID: "
read uid
echo "Enter Tag Number: "
read dicomTag

dicomDump() {
        arg1=$1
        cd ~/export/"$1"
        dcmdump *.dcm > ~/export/"$1"/dcmResults.txt
}
tagFinder() {
        arg1=$1
        arg2=$2
        for i in $(cat ~/export/"$1"/dcmResults.txt); do 
            grep "$2" | awk '/[0-9]{4},[0-9]{4}.*/' dcmResults.txt >> ~/export/"$1"/tagResults.txt
        break
done;
}
dicomDump "$uid"
tagFinder "$uid" "$dicomTag"
杰森·沃扬

了GNU AWK才开始,包括间隔表达式(你的{4}排位赛[0-9]在4.0):

间隔表达式传统上无法在awk中使用。他们被添加为POSIX标准,使awk和相互一致的egrep的一部分。

最初,由于旧程序可能在正则表达式常量中使用'{'和'}',因此gawk与正则表达式中的间隔表达式不匹配。

但是,从版本4.0开始,gawk会默认匹配间隔表达式。这是因为与POSIX相容性比旧程序的兼容性成为最GAWK用户更为重要。

对于在正则表达式常量中使用'{'和'}'的程序,最好始终使用反斜杠对其进行转义。然后,使用任何版本的awk.17,regexp常量都将有效并按照您希望它们的方式工作。

请参阅手册条目

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章