Переменные из файла

-4

Текстовый файл имеет следующую структуру:

paa pee pii poo puu
baa bee bii boo buu
gaa gee gii goo guu
maa mee mii moo muu

Чтение строки за строкой в скрипте выполняется с помощью

while read LINE; do 
ACTION
done < FILE

Мне нужно было бы получить параметры 3 и 4 каждой строки в переменные для ACTION. Если бы это был ручной ввод, $ 3 и $ 4 сделали бы трюк. Я предполагаю, что awk - это инструмент, но я просто не могу обернуть голову вокруг синтаксиса. Halp?

спросил(а) 2021-01-25T17:24:43+03:00 5 месяцев назад
1
Решение
77

read это просто отлично. Передайте ему несколько переменных, и он разделится на $IFS на многие поля.

while read -r one two three four five; do
action "$three" "$four"
done <file

Я добавил параметр -r потому что это обычно то, что вы хотите. Поведение по умолчанию - унаследованная странность ограниченного использования.

ответил(а) 2021-01-25T17:24:43+03:00 5 месяцев назад
45

Спасибо, тройной. Тем временем мне удалось найти подходящее решение:


#!/bin/sh

if [ ! $1 ]; then
echo "Which inputfile?"
exit
elif [ ! $2 -o ! $3 ]; then
echo "Two position parameters required"
exit
fi

if [ -f outfile ]; then
mv outfile outfile.old
fi

while read -a LINE; do
STRING="${LINE[@]}"
if [ ${LINE[$2-1]} == ${LINE[$3-1]} ]; then # remove comment for strings
# if [ ${LINE[$(($2-1))]} -eq ${LINE[$(($3-1))]} ]; then # remove comment for integers
echo $STRING >> outfile
fi
done < $1

ответил(а) 2021-01-25T17:24:43+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема