Присвойте значение переменной цикла awk-for переменной bash - PullRequest
0 голосов
/ 17 мая 2018

содержимое в временном файле

123 sam moore IT_Team
235 Rob Xavir Management

То, что я пытаюсь сделать, это получить данные от пользователя и найти их в временном файле, а результаты поиска должны дать номер столбца

КодУ меня есть для этого

#!/bin/bash
set -x;
read -p "Enter :" sword6;
awk 'BEGIN{IGNORECASE = 1 }
{
for(i=1;i<=NF;i++) {
    if( $i ~ "'$sword6'$" )
            print i;
    }
} ' /root/scripts/pscripts/tempprint.txt;

Это точно номер столбца

Выход

Enter : sam
2

Мне нужно, чтобы значение переменной i было назначено переменной bash, такЯ могу позвонить в соответствии с необходимостью в сценарии.

Любая помощь в этом высоко ценится.

Я искал, чтобы найти любой существующий ответ, но не смог найти ни одного.Если да, дайте мне знать, пожалуйста.

Ответы [ 4 ]

0 голосов
/ 17 мая 2018

Если файл tempprint.txt большой

awk -v w="$word6" '
BEGIN { IGNORECASE = 1 }
"$0 ~ \\<w\\>" {
    for(i=1;i<=NF;i++)
        if($i==w)print i
}' tempprint.txt
0 голосов
/ 17 мая 2018

Вам просто нужно захватить вывод awk. Кроме того, я бы передал sword6 как переменную awk, а не вставил бы ее через интерполяцию строк.

i=$(awk -v w="$sword6" '
        BEGIN { IGNORECASE = 1 }
        { for (i=1;i<=NF;i++) {
            if ($i ~ w"$") { print i; }
          }
        }' /root/scripts/pscipts/tempprint.txt)
0 голосов
/ 17 мая 2018

Следующий скрипт тоже может вам помочь.

cat script.ksh
echo "Please enter the user name:"
read var
awk -v val="$var" '{for(i=1;i<=NF;i++){if(tolower($i)==tolower(val)){print i,$i}}}'   Input_file
0 голосов
/ 17 мая 2018
  • Прежде всего, вы должны передать свою переменную оболочки в awk следующим образом (например, sword6)

    awk -v word="$sword6" '{.. if($i ~ word)...}`...
    
  • , чтобы назначить переменную оболочки с помощьювывод другой команды:

    shellVar=$(awk '......')
    

Затем вы можете продолжить использовать $shellVar в своем скрипте.

относительно ваших кодов awk:

  • если пользователь вводит некоторые специальные символы, ваш скрипт может завершиться ошибкой, например, .*
  • , если один столбец совпадал с пользовательским вводом несколько раз, вы можете получить дублированный вывод.
  • , если ваш файл имелнесколько столбцов, совпадающих с пользовательским вводом, вы можете обработать его.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...