这是我的脚本片段,如果第二列的值是" THWR"则打印文件的记录。我需要添加" RWGW"和" OSPW"进入比赛标准。这是否可以使用awk的匹配功能?
var daysArray = [];
for (var i = 0; i < results.length; i++) {
var dayOb = {
date: '',
day: '',
formattedDate: '',
};
var date = results[i].date;
dayOb.date = moment(date).date();
dayOb.day = moment(date).format('ddd');
dayOb.formattedDate = moment(date).format('MM/DD(ddd)');
daysArray.push(dayOb);
}
var weeksArray = [];
var count = 0;
for (var i = 0; i < Math.ceil(daysArray.length / 7); i++) {
var weekOb = {
week: {
days: [],
},
};
weeksArray.push(weekOb);
}
var nextStart = 0;
for (var i = 0; i < weeksArray.length; i++) {
var count = 0;
for (var j = nextStart; j < daysArray.length; j++) {
count++;
if (count < 8) {
weeksArray[i].week['days'].push(daysArray[j]);
} else {
nextStart = j;
break;
}
}
count = 0;
}
示例输入:
awk -v FPAT='([^,]*)|("[^"]*")' 'NR==1; NR>1 && match($2,"THWR")
期望的输出:
col1,col2,col3
123,THWR,123
123,RWGW,123
123,OSPW,123
123,POOL,123
123,TYTY,123
我希望通过col1,col2,col3
123,THWR,123
123,RWGW,123
123,OSPW,123
匹配尽可能地做到这一点。
答案 0 :(得分:1)
请您试试,请告诉我这是否对您有所帮助。您可以使用逗号分隔在名为var
的变量中提供n个字符串。
awk -F, -v var="THWR,RWGW,OSPW" 'BEGIN{num=split(var, array,",");for(i=1;i<=num;i++){array1[array[i]]}} $2 in array1' Input_file
现在也添加非单线形式的解决方案。
awk -F, -v var="THWR,RWGW,OSPW" '
BEGIN{
num=split(var, array,",");
for(i=1;i<=num;i++){ array1[array[i]] }
}
$2 in array1
' Input_file
输出如下。
123,THWR,123
123,RWGW,123
123,OSPW,123
答案 1 :(得分:0)
@ RavinderSingh13的方法是正确且可重复使用的,但有时你只想检查一对(或在这种情况下为三个)候选人的字段值。在这种情况下使用:
$ awk -F, 'NR==1 || $2 ~ /^(THWR|RWGW|OSPW)$/' file
col1,col2,col3
123,THWR,123
123,RWGW,123
123,OSPW,123