я следующие данные, потенциально распространяться через несколько входных файлов:Сортировка результатов AWK на несколько файлов на основе значения диапазонов
colB1:colB2:colB3:$130.00:...
colC1:colC2:colC3:$83.00:...
colD1:colD2:colD3:$80.00:...
Моя цель состоит в том, чтобы написать первые два столбца из каждой строки ввода в выходной файл, имя которого содержит номер, начинающийся с диапазона $ 10.
Таким образом, для приведенного выше входа, я бы два выходных файла, один с двумя линиями, другой с одним:
balance-80.out
===
colC1:colC2
colD1:colD2
balance-130.out
===
colB1:colB2
Моя текущая попытка выглядит следующим образом:
#!/bin/bash
for ((value_1=90; value_1<200; value_1+=10)); do
awk -F: \
-v var=$value_1 \
-v var1=$((value_1+10)) \
'{ sub(/\$/, "", $4) }
($4+0) >= var && ($4+0) < var1 { print $1":"$2 }' \
*.txt > balance_$value_1.txt
done
Это работает, но это, очевидно, очень клочья. Как это можно сделать за один проход?
Почему вы не начать строить MCVE и фиксируя очевидные ошибки, которые * не являются * связаны с 'awk'? Например, '$ value_1 = 90' не присваивает переменной' значение_1' вообще. –
... откровенно говоря, вопрос, с которым вы были связаны как дубликат *, * описывает ошибки, которые присутствуют в вашем скрипте. Если вы исправите эти ошибки и все еще имеете проблемы, то это будет хорошим местом, чтобы помочь вам, но сначала исправьте все другие проблемы, так что ошибка * only *, присутствующая в вашем скрипте, является конкретной ошибкой, должен быть о. –
Что такое MCVE google возвращает программное обеспечение для кредитных карт? – Hopelessone