2010-08-30 55 views
1

AWK /从我KSH sed的测试命令

[[ ` echo $READ_LINE | awk '{print $2}' ` != SOME_WORD ]] && print "not match" 

我可以建议如何验证没有echo命令一样吗? (也许AWK/sed的就是罚款吗?)

利迪娅

回答

0

像这样将工作:

awk -v x="$READ_LINE" -v y="SOME_WORD" 'BEGIN { split(x, a); if (a[2] != y) print "not match";}' 

但来自哪里$READ_LINE?你想达到什么目的?也许还有一个很好的简单的shksh解决方案。

我非常怀疑你的说法echo(这可能是一个shell内置)需要比awk更多的时间。这里是一个plain sh版本:

set -- $READ_LINE 
[ x$2 != xSOME_WORD] && echo "not match" 

kshsolution of Dennis Williamson寻找最适合你的情况。

+0

目标是节省时间(回声需要时间awk不) – lidia 2010-08-30 09:07:10

0
read ign val && [ X$val != XSOME_WORD ] && echo "not match" 
0

这样会将字段分开并测试第二个单词。

var=($READ_LINE) 
[[ ${var[1]} != SOME_WORD ]] && print "not match" 

你试图完成什么?你的几个问题几乎完全相同。

+0

var =($ READ_LINE)在ksh中没有有效的语法! – lidia 2010-08-30 09:59:51

+0

是的。你必须使用很老的ksh – ghostdog74 2010-08-30 13:48:05

+0

@lidia:什么版本的ksh?你使用'#!/ bin/ksh','#!/ usr/bin/ksh'还是'#!/ bin/sh'作为脚本的第一行(shebang)? – 2010-08-30 14:23:13

0

,如果你使用的是ksh的,那么就使用shell,而无需调用外部命令

set -- $READ_LINE 
case "$2" in 
    "SOME_WORD") echo "found";; 
esac 

为什么你还在因为我看你有没有类似这样的其他线程黏合这个问题?