Сравните значение в CSV-файле, если оно истинно, затем выберите другое значение в том же файле - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть входной файл как:

11722550697,TEST_003,timi-export/do/ua.10451337354/11722550697
11724290732,TEST_001,timi-import/do/ca.10451337354/11724290732
11722550697,TEST_002,timi-export/do/vo.10451337354/11722550697
11724290735,TEST_005,timi-import/do/ka.10451337354/11724290732
11722550694,TEST_006,timi-import/do/tn.10451337354/11722550697
11724290733,TEST_007,timi-export/do/kl.10451337354/11724290732

Я получу ввод от пользователя, и мне нужно сравнить его со вторым значением, присутствующим в файле csv в каждой строке (TEST_00 *), и затем извлечь первое значение, которое является идентификатором этого значения для дальнейшего обработка.

Примечание: файл содержит фиктивные данные, приведенные здесь, и фактические данные варьируются много.

Ответы [ 3 ]

0 голосов
/ 02 ноября 2018

Предполагая, что вам нужно точное соответствие, создайте скрипт, скажем, test.sh со следующим содержимым:

awk -v input="$1" -F',' '$2==input{print $1}' input_file.csv

Затем вы можете запустить скрипт как:

sh test.sh TEST_003

, который даст вывод как:

11722550697
0 голосов
/ 02 ноября 2018

Не могли бы вы попробовать следующее.

cat ./script.ksh
echo "Please enter a value."
read value
awk -v val="$value" -F, '$2==val{print $1}' Input_file

Далее будет выполнено выполнение скрипта.

./script.ksh
Please enter a value.  ##here is where user is entering value.
TEST_003
11722550697

Объяснение: Добавление объяснения тоже сейчас.

echo "Please enter a value."  ##Using echo command for printing message for user.
read value                    ##Using read command from bash to accept value from user and keep it in value.
awk -v val="$value" -F, '     ##Starting awk program here -v val to keep bash variable in it and setting field separator as comma here.
$2==val{                      ##Checking condition here if 2nd field value is equal to val here if yes then do following.
  print $1                    ##Printing first field here.
}' Input_file                 ##Mentioning Input_file name here.
0 голосов
/ 02 ноября 2018

Использование grep и cut:

grep '^[^,]*,'$user_input, input_file | cut -d, -f1

В сценарии вы, вероятно, будете использовать $1 вместо $user_input.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...