我有一个文件ut.txt
,它有一个长度为385186字节的值。我正在使用以下内容来查找值是否为Numeric:
if [[ `cat ut.txt` = +([0-9]) ]]
then
echo "Numeric"
fi
这适用于较小的文件。但是使用ut.txt(385186字节),它会给我以下错误:
Segmentation Fault(coredump)
有人建议在避免错误的同时进行检查吗?
答案 0 :(得分:0)
你可以尝试
grep -q '[a-zA-Z]' ut.txt || echo "Numeric"
Grep搜索任何已定义的序列([a-zA-Z]
),如果未找到(||
)echo
,则搜索您想要的内容。
更新 ,如评论中所述,您可能有另一个(例如非ASCII,如重音)字符,可归类为非数字。
在这种情况下,您可以使用
grep -q '[^0-9]' ut.txt || echo "Numeric"
将搜索除数字字符以外的任何内容。
答案 1 :(得分:0)
你有点滥用反引号的功能。它们不应该处理那么长的输出。段错不是ksh应该做出的反应,但我建议使用流式版:
if egrep -q '^[0-9]+$' ut.txt
then
echo "Numeric"
fi