информация об извлечении из файла с циклом

Я нуждаюсь в помощи :) У меня есть файл как это:

AA BC FG

RF TT GH

DD FF HH

(некоторые нумеруют строк и три столбца), и я хочу поместить буквы каждого столбца в переменной шаг за шагом, чтобы дать им как вход в другом сценарии. Таким образом, я хотел бы получить:

для цикла на 1 °:

var1 = AA
var2 = BC
var3 = FG

для цикла на 2 °:

var1 = RF
var2 = TT
var3 = GH

для цикла на 3 °:

var1 = DD
var2 = FF
var3 = HH
1
задан 12 June 2018 в 07:15

2 ответа

Если Вы регистрируете, имеет точно 3 разделенных от пробела объекта на каждой строке (никакие пустые строки, например) затем, необходимо смочь использовать простое while ... read цикл:

while read -r var1 var2 var3; do
  ./otherscript "$var1" "$var2" "$var3"
done < "file"

, Если существуют пустые строки, то необходимо, вероятно, считать полные строки и только проанализировать непустые, например,

while IFS= read -r line; do
  if [[ -n "$line" ]]; then 
    read -r var1 var2 var3 <<< "$line"
    ./otherscript "$var1" "$var2" "$var3"
  fi
done < "file"
3
ответ дан 7 December 2019 в 12:37

Полагая, что Ваш входной файл только обеспечивает аргументы сценарию, xargs разумный выбор в этой ситуации. Позволяет берут этот сценарий в качестве примера:

#!/bin/bash
echo "This is a test"
echo "var1 is $1 " "var 2 is $2 " "var 3 is $3"

Мы можем использовать xargs с -L1 для того, чтобы проводить 1 строку в файле как аргументы, и --arg-file указывать файл, содержащий те аргументы. Таким образом:

$ xargs -L 1 -r --arg-file=input.txt ./somescript.sh 
This is a test
var1 is AA  var 2 is BC  var 3 is FG
This is a test
var1 is RF  var 2 is TT  var 3 is GH
This is a test
var1 is DD  var 2 is FF  var 3 is HH

Заметьте -r опция, которая предотвращает xargs от запущения скрипта на пустых строках, которые содержатся в Вашем входном примере файла.

0
ответ дан 7 December 2019 в 12:37

Другие вопросы по тегам:

Похожие вопросы: