У меня есть два файла: ФАЙЛ1 и file2 следующим образом:Matching поля через несколько файлов
file1 file2 orangejuice orangejuice_9.88_9.88 pineapplejuice appleslices_6.3_2.2 appleslices pineapplejuice_1.2_3.9 Mangojuice Mangojuice_5.55_5.55
Вывод должен быть:
orangejuice_988 pineapplejuice_120_390 appleslices_630_220 Mangojuice_555
Во время чтения построчно из file1, поиск шаблона найденный в строке file1 в файле2, после того, как найденный сравнивает 2-й и 3-ый поля файла2, если они один и тот же, напечатайте один раз, если не печатают два числа. (Число должно быть умножено на 100 в любом случае)
Я думал об этом:
while read -r -u 3 line1
do
nawk ' "$line1" print $0}' file2.txt
if "$2" == "$3"
then echo "scale=2;$2*100" |bc
else echo "$2_$3"
fi
done 3<file1.txt
Итак, я хочу знать, если логика верна и зафиксировать умножение, которое дало бы мне 988 вместо 988.0.
Приведенный выше код дает ошибку – t28292
Нет, приведенный выше код отлично работает с вашим вводом и 'GNU awk'. Либо вы не используете 'GNU awk', то есть у вас есть Mac, или ваш вопрос не отражает ваши фактические данные. 'вышеуказанный код дает ошибку' для меня совершенно бесполезен, какая ошибка? Какая версия или 'awk' у вас есть? какую систему вы используете? –
У меня есть solaris, поэтому я использую nawk – t28292