2017-02-06 2 views
1

Так что я искал довольно много для этого, и я довольно новичок в Shell, Я хочу перебирать строки Resultset в SHELL-скрипте и для каждой строки я хочу выполнить некоторый код используя каждый столбец текущей строки. Предположим, что набор результатов выглядит так.Итерация через результирующий набор в оболочке

Query        Priority Size 
--------------------------------------------------- 
this is a sentence to execute  high 124400 
this is another example   low  15000000 
... 

Так как же мне удается перебирать этот набор результатов и хранить каждый столбец в его собственной переменной? Вот Exemple для первой линии:

var1="this is a sentence to execute" 
var2="high" 
var3=124400 
#repeat process for next line 

ответ

0

Вот что вы можете сделать:

  • Извлечение данных в файл с разделителями (например, CSV), если это возможно, избежать заголовки. Если у вас есть заголовки, не забудьте их исключить во время чтения.
  • данные считываются из файла в массив или набор переменных

так:

# using an array - works great if we have a variable number of columns 
while IFS=, read -r -a row; do 
    # ${row[0]} => column1, ${row[1]} => column2 and so on 
    # process data 
done < input.dat 

# using variables - works great if we have a fixed set of variables 
while IFS=, read -r column1 column2 column3; do 
    # process data 
done < input.dat 

Смотрите также: How do I split a string on a delimiter in Bash?

+0

Благодаря тот совершенен, я просто интересно, если есть в любом случае добиться того же, не используя внешний файл? – Jmercier13

+0

Вы можете напрямую вывести вывод экстрактора данных в цикл while. – codeforester

Смежные вопросы