awk / sed для тестовой команды - PullRequest
1 голос
/ 30 августа 2010

из моего ksh у меня есть

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

Могу ли я получить предложение, как проверить то же самое без команды echo?(может быть, awk / sed подходит для этого?)

lidia

Ответы [ 4 ]

0 голосов
/ 30 августа 2010

если вы используете ksh, тогда просто используйте оболочку без необходимости вызова внешних команд

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

Почему вы все еще решаете эту проблему, поскольку я вижу, что у вас есть другие темы, похожие на эту .?

0 голосов
/ 30 августа 2010
read ign val && [ X$val != XSOME_WORD ] && echo "not match"
0 голосов
/ 30 августа 2010

Это разбивает строку по словам и проверяет второе слово.

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

Чего ты пытаешься достичь? Некоторые из ваших вопросов почти идентичны.

0 голосов
/ 30 августа 2010

Примерно так будет работать:

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

Но откуда взялся $READ_LINE?Что вы пытаетесь достичь?Также может быть хорошее простое решение sh или ksh.

Я очень сомневаюсь в вашем утверждении, что echo (который может быть встроенным в оболочку) занимает больше времени, чем awk.Вот plain sh версия:

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

Но решение ksh Денниса Уильямсона выглядит лучшим для вашей ситуации.

...