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;双引号。结果相同
答案 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:它更简洁,同样可读,而且速度更快。