AWK команды в файле дает ошибку при выполнении в цикле

Обновить

April 2019

Просмотры

66 раз

1

file_data.txt

73|8|42.320000|1559260800000|1|9667|0.00|42.320000||1485613678440| 153|8|35.680000|1559260800000|1|10899|0.00|35.680000||1482480306523| 2503|8|93.390000|1559260800000|1|6106|0.00|93.390000||1484304241803| 2672|8|49.990000|1559260800000|1|7754|0.00|49.990000||1482064270543|

AWK_COMMANDS.txt

awk -F '|' '$2 == 3280 {print;}' file_data.txt
awk -F '|' '$2 == 3281 {print;}' file_data.txt

Я бегу ниже в то время как цикл

while read line
do
 $line
done < AWK_COMMANDS.txt

Я получаю ошибку ниже

awk: cmd. line:1: '$2 awk: cmd. line:1: ^ invalid char ''' in expression awk: cmd. line:1: '$2 awk: cmd. line:1: ^ invalid char ''' in expression

когда я выполнить ту же команду в консоли непосредственно работает.

Я попытался убежать и двойные кавычки. Это приводит тот же

2 ответы

0

If you wanted to do this with plain bash, you would write

while IFS='|' read -r first second rest; do
    case $second in
        3280|3281) echo "$first|$second|$rest" ;;
    esac
done < file_data.txt

But stick with awk: it's more concise, equally readable, and MUCH faster.

0

This simple following command will help you in your problem.

awk -F '|' '$2 == 3280 || $2 == 3281' file_data.txt

Связанные вопросы