Bash: remove an array element which contains a value in another array
我想删除包含其他数组元素的数组元素。
如
array1 = (aaaa bbbb abcd)
array2 = (b c)
result = (aaaa)
我写了这段代码,但不起作用
1 2 3 4 | for element in"${array2[@]}" do result=(${array1[@]/.*$element.*}) done |
你能告诉我为什么,我应该怎么做吗?
这是我的刺。我很肯定这完全可以用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/bin/bash array1=(aaaa bbbb abcd) array2=(b c) result=() for i in"${array1[@]}" do sumIndexOf=0 for j in"${array2[@]}" do sumIndexOf=$((sumIndexOf + $(echo $i $j | awk '{print index($1,$2)}'))) done if ["$sumIndexOf" ="0" ]; then result+=($i) fi done printf '%s '"${result[@]}" |
参考/使用:
- https://stackoverflow.com/a/17695693/1688441
- bash:在不指定键的情况下向数组添加值
- 将awk结果赋给变量
我认为您错了,您需要逗号作为数组元素之间的分隔符。但逗号实际上成为元素的一部分。除此之外,
1 2 3 4 5 6 7 8 9 10 | array1=(aaaa bbbb abcd) array2=(b c) result=("${array1[@]}") for element in"${array2[@]}" do result=(${result[@]/*${element}*/}) done echo"${result[@]}" |
这会将数组复制到