文件中的awk命令在循环中执行时会出错

时间:2018-01-02 16:51:19

标签: linux bash shell awk scripting

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

当我直接在控制台中执行相同的命令时,它可以工作。

我尝试了逃避&amp;双引号。结果相同

2 个答案:

答案 0 :(得分:0)

这个简单的以下命令将帮助您解决问题。

auc

答案 1 :(得分:0)

如果你想用普通的bash做这个,你会写

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

但坚持使用awk:它更简洁,同样可读,而且速度更快。