我正在使用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] 删除。
我来说两句