【发布时间】:2021-03-09 11:16:43
【问题描述】:
我得到一个包含名称数组的文件,我得到另一个包含多个数字系列的文件,从 1 计数到数组的长度。它们具有相同的长度,除了系列的最后一位始终为 0。这些数字可以以“-”开头,那么当前元素不应映射到它,或者它只是纯数字。
现在我想将数组的第一个元素映射到数字 1,第二个元素映射到 2,...。这是一个例子:
第一个文件包含:
['aaaaa', 'bbb', 'cccc', 'dd', 'eeeee']
其他文件包含:
-1 2 -3 -4 -5 0
1 -2 3 4 -5 0
1 2 -3 4 5 0
所需的输出:
bbb
aaaaa, cccc, dd
aaaaa, bbb, dd, eeeee
注意:输出的格式不必是这种精确的格式。我想在 bash/shell 中完全使用它,并且不要使用其他 python、c、... 脚本。
编辑:
我有一段时间没找了,因为我以为没人会这么快回复。与此同时,我为此编写了自己的代码。在这里你可以看到最终结果...
...假设第一个文件称为tmp.txt,第二个文件称为tmp_num.txt:
NAMES=()
for elem in $(cat tmp.txt | sed "s/,//g; s/[][]//g; s/'//g")
do
NAMES+=($elem)
done
for number in $(cat tmp_num.txt)
do
if [ "$number" -eq "0" ]; then
echo
continue
fi
if [[ ${number:0:1} != "-" ]] ;
then
number=$((number-1))
echo -n ${NAMES[${number}]}" ";
fi
done
【问题讨论】:
-
请使用您迄今为止尝试过的代码更新问题,并且(正确/错误)结果表明代码正在生成
-
对不起@markp-fuso 我看到你来晚了。在我找到了一些好的方法之后,我开始了,然后我有了最终的代码。
标签: linux bash shell awk command-line