输入csv -新参数.csv
价值观如-
ID
Identity
as-uid
cp_cus_id
evs
k_n
master.csv具有类似于-的值
A, xyz, id, abc
n, xyz, as-uid, abc, B, xyz, ne, abc
q, xyz, id evs, abc
3, xyz, k_n, abc, C, xyz, ad, abc
1, xyz, zd, abc
z, xyz, ID, abc
要求输出更新new_param.csv -第2列中为真或假
ID,true
Identity,false
as-uid,true
cp_cus_id,false
evs,true
k_n,true
尝试以下代码无输出-
#!/bin/bash
declare -a keywords=(`cat new_param.csv`)
length=${#keywords[@]}
for (( j=0; j<length; j++ ));
do
a= LC_ALL=C awk -v kw="${keywords[$j]}" -F, '{for (i=1;i<=NF;i++) if ($i ~ kw) {print i}}' master.csv
b=0
if [ $a -gt $b ]
then
echo true $2 >> new_param.csv
else
echo false $2 >> new_param.csv
fi
done
帮帮忙吧!
尝试上述代码,但没有帮助我
获取错误,如-test.sh: line 29: [: -gt: unary operator expected test.sh: line 33: -f2: command not found
4条答案
按热度按时间wnvonmuf1#
kmb7vmvb2#
试试这个Shellcheck-clean pure Bash代码:
grep -E
一起使用的正则表达式。vshtjzan3#
使用
grep
查找精确匹配的单词:然后将其馈送到
awk
以匹配new_param.csv
条目:这将产生:
确认结果正确后,OP可将
> new_param.csv
添加到awk
脚本末尾,例如:jaql4c8m4#
替代
awk
选项:使用
,
作为字段分隔符,并处理master.csv
的每条记录的第3个字段。首先,从第3个字段中去掉前导/尾随空格,然后将其附加到变量m
。其次,从new-params.csv
文件中读取每条记录,并使用index
函数确定m
变量字符串中是否存在该记录。输出: