Shell脚本-获取包含通过数组传递的值的csv字段/列
inputdata1.txt文件的示例数据具有如下值-
id name gender
test.csv的样本数据具有多个字段/列,其中一些字段/列具有值id,值类似于test.csv的2行
/"id":"21"/, /"p1":"abc"/, /"id":"22"/
/"id":"23"/, /"p2":"zyx"/, /"id":"24"/, /"id":"25"/
类似地具有多行
需要输出-仅获取包含ID的列&我可以获取整行,但仅需要该列
输出如下格式2行csv
/"id":"21"/ /"id":"22"/
/"id":"23"/ /"id":"24"/ /"id":"25"/
面临问题"${keywords [$j ]}"不返回任何值,如果我仅用于打印它的工作与此命令有问题
awk -F, '{for (i=1;i<=NF;i++) if ($i~ "${keywords[$j]}") {print $i}}' test.csv
我的代码:
#!/bin/bash
declare -a keywords=(`cat inputdata1.txt`)
length=${#keywords[@]}
for (( j=0; j<length; j++ ));
do
awk -F, '{for (i=1;i<=NF;i++) if ($i~ "${keywords[$j]}") {print $i}}' test.csv
#awk -F, '{ for (i=1;i<=NF;i++) if($i~ "id") {print $i}}' test.csv
printf "Current index %d with value %s\n" $j "${keywords[$j]}"
done
需要输出-仅获取包含ID的列&我可以获取整行,但仅需要该列
1.如果我尝试从命令中删除',它会给我错误-:
syntax error near unexpected token `('
test.sh: line 14: ` awk -F, {for (i=1;i<=NF;i++) if ($i~ "${keywords[$j]}") {print $i}} request.csv'
1.如果我尝试添加",则错误为
awk: syntax error at source line 1
context is
{for (i=1;i<=NF;i++) if >>> (~ <<<
awk: illegal statement at source line 1
2条答案
按热度按时间bbuxkriu1#
对数组的数组和sorted_in使用GNU awk:
pgccezyw2#
谢谢大家的支持!!