【发布时间】:2019-02-16 13:33:48
【问题描述】:
我想将每个输出文件路径保存到一个变量中,然后通过 grep 查找时间戳。我想通过从我正在循环的节点列表中添加 nodeId 来标记每个变量。当我使用以下代码尝试此操作时,出现错误
output1_1:找不到命令
nodeList=('1_1' '1_6' '2_1' '2_6')
for i in "${nodeList[@]}"
do
output${i}=$CWD/output/abc${i}.txt
times${i}=$(grep -m 1 '\"path\":' $output${i}| sed 's/.*timestampUtc\"://g' | sed 's/,.*//g')
done
【问题讨论】:
-
为什么不使用关联数组?
declare -A output times,然后是output[$i]=... -
代替
grep -m | sed | sed,试试这个(多合一)sed命令:sed '/\"path\":/{s/.*timestampUtc\":/\([^,]*\),.*/\1/;q};d'
标签: arrays string bash file loops