из моего кш у меня есть
[[ ` echo $READ_LINE | awk '{print $2}' ` != SOME_WORD ]] && print "not match"
Могу я получить предложение, как проверить то же самое без команды echo? (может быть, для этого подойдет awk / sed?)
Лидия
из моего кш у меня есть
[[ ` echo $READ_LINE | awk '{print $2}' ` != SOME_WORD ]] && print "not match"
Могу я получить предложение, как проверить то же самое без команды echo? (может быть, для этого подойдет awk / sed?)
Лидия
Примерно так будет работать:
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 Денниса Уильямсона лучше всего подходит для вашей ситуации.
Это разбивает строку по словам и проверяет второе слово.
var=($READ_LINE)
[[ ${var[1]} != SOME_WORD ]] && print "not match"
Чего вы пытаетесь достичь? Некоторые из ваших вопросов почти идентичны.
#!/bin/ksh, #!/usr/bin/ksh или #!/bin/sh в качестве первой строки вашего скрипта (shebang)?
- person Dennis Williamson; 30.08.2010
если вы используете ksh, просто используйте оболочку без необходимости вызывать внешние команды
set -- $READ_LINE
case "$2" in
"SOME_WORD" ) echo "found";;
esac
Почему вы все еще решаете эту проблему, если я вижу, что у вас есть другие темы, похожие на эту?