Как я могу сохранить длину строки в переменной с помощью скрипта awk? - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть этот простой скрипт awk, с помощью которого я пытаюсь проверить количество символов в первой строке.если в первой строке больше 10 символов, я хочу сохранить количество символов в переменной.Каким-то образом первый оператор print работает, но сохранение этого результата в var - нет.Пожалуйста помоги.Я попытался удалить знак доллара " thelength = (length ($ 0)) " и удалить скобку " thelength = length ($ 0) ", но он ничего не печатал ...

Спасибо!

#!/bin/ksh
awk ' BEGIN {FS=";"}
{
 if (NR==1)
        if(length($0)!=10) 
    {
    print(length($0))
    thelength=$(length($0))
    print "The length of the first line is: ",$thelength;
    exit 1;
    }
    }
    END { print "STOP"  }' $1

1 Ответ

0 голосов
/ 28 сентября 2018

Две проблемы, связанные со смешиванием ksh и awk сценариев ...

  • нет необходимости делать вызов sub-shell в пределах awk для получения длины;используйте thelength=length($0)
  • awk переменные не требуют ведущего $ при ссылке;используйте print ... ,thelength

Таким образом, ваш код становится:

#!/bin/ksh
awk ' BEGIN {FS=";"}
{
 if (NR==1)
        if(length($0)!=10) 
    {
    print(length($0))
    thelength=length($0)
    print "The length of the first line is: ",thelength;
    exit 1;
    }
    }
    END { print "STOP"  }' $1
...