Как я могу получить доступ к столбцу строки из строки?

У меня есть файл, который я просматриваю в цикле for . Я хочу сделать что-то вроде …

for line in file.out; do echo "Some text before $line($2) $line($3)"; done

Где для каждой строки я вставляю второй и третий столбцы из этой строки в текущую строку. Есть ли простой способ сделать это? Могу ли я получить доступ к awk из строки?

Пример ввода:

 some.metric.tag_A 100500 1446043920 some.metric.tag_B 100501 1446043921 some.metric.tag_C 100502 1446043922 some.metric.tag_D 100503 1446043923 

Пример вывода:

 Some text before 100500 1446043920 Some text before 100501 1446043921 Some text before 100502 1446043922 Some text before 100503 1446043923 

Использование awk

awk неявно пересекает линии и разделяет каждую строку на поля:

 $ awk '{printf "Some text before %s %s\n",$2,$3}' file.out Some text before 100500 1446043920 Some text before 100501 1446043921 Some text before 100502 1446043922 Some text before 100503 1446043923 

Если мы знаем, что входной файл всегда будет иметь только три столбца, тогда эта команда может быть сокращена до (подсказка для шляпы: Дон Криссти):

 $ awk '{$1="Some text before"} 1' file.out 

Использование оболочки

Строки можно разбить на поля, используя инструкцию read оболочки:

 $ while read abcd; do echo "Some text before $b $c" ; done <file.out Some text before 100500 1446043920 Some text before 100501 1446043921 Some text before 100502 1446043922 Some text before 100503 1446043923