У меня есть команда awk для фильтрации строк с использованием столбца 2.
awk 'BEGIN { FS = ","; OFS = FS;} {if ($2=="ABC" || $2=="DEF" || $2=="PQR" || $2=="XYZ") print}' $1 >> $1tmp
Можно ли получить логику, чтобы я мог читать значения (ABC, DEF, XYZ) с помощью текстового файла и передавать егов awk.
Inputfile.csv
1,ABC,100
2,XYZ,200
3,MNO,100
4,PQR,100
5,EFG,100
6,QWE,100
7,DEF,200
Выходные данные должны быть похожи на
1,ABC,100
2,XYZ,200
4,PQR,100
7,DEF,200
value.txt файл содержит
ABC
PQR
DEF
XYZ
ЕстьНесколько способов я пытался достичь этого
filename = value.txt
while IFS='' read -r line || [[ -n "$line" ]]; do
awk 'BEGIN { FS = ","; OFS = FS;} {if ($2=="$line") print}' Inputfile.csv
done < $filename
, но не сработал, и я думаю, что если это сработает, то тогда может потребоваться много времени для обработки больших данных.
Другой подход
filename = value.txt
ind=0
while read line ; do
MYARRAY[$ind]=$line
index=$(($ind+1))
done < $filename
awk 'BEGIN { FS = ","; OFS = FS;} {if ($2== ${MYARRAY[@]})
но здесь проблема в том, что MyArray печатает значение в виде строки (ABC PQR XYZ ....), которая не соответствует условию if в awk