Bash: извлечь переменную из столбца без печати

У меня есть переменная ($line), которая определена в сценарии bash/shell как

$line = "abc:123:def:345" 

Мне нужно передать этот столбец2 = "123" в переменную, не печатая его.

Команда извлекает столбец, но также печатает переменную.

FILE=$1
while read line
do
awk -F: '{print $2}' <<< "$line"
done < $FILE

Спасибо.

🤔 А знаете ли вы, что...
Bash - это командный интерпретатор Unix-подобных операционных систем.


58
2

Ответы:

Вы можете поймать его в переменную:

value=$(awk -F : '{ print $2 }' "$FILE")

Синтаксис $(command) (или его устаревший аналог с обратными кавычками `command`) называется подстановкой команд. Он используется для оценки внутренней команды и предоставления ее результата в качестве аргумента текущей команде.

Обратите внимание, что Awk уже умеет перебирать все строки файла.


Решено

Вам не нужно вызывать внешнюю команду awk:

#!/bin/bash

FILE=$1
while IFS=: read na column2 na
do
    echo "$column2"
done < $FILE