,没有阵列的工作原理,使用一个额外的文件句柄的时间从2种源来读取一个版本。
while read host; read result <&3; do
echo "$host:$result"
done < <(grep peers results.txt | cut -d: -f2 | awk '{print $1}') \
3< <(grep cleanup results.txt | cut -d':' -f2 | awk '{print $1}' | sed -e 's/K/000/' -'s/M/000000/')
它仍然不是POSIX,因为它需要进程替换。你可以改用明确的fifes。 (另外,试图缩短产生主机和结果的流水线,可能将这个命令合并为一个awk
命令,因为您可以在awk
中执行替换,或者从awk
中执行之间的管道输入sed
。题外话,所以我把它作为一个练习,读者)
mkfifo hostsrc
mkfifo resultsrc
awk -F: '/peers/ {split($2, a, ' '); print a[1]}' results.txt > hostsrc &
awk -F: '/cleanup/ {split($2, a, ' '); print a[1]}' results.txt | sed -e 's/K/000' -e 's/M/000000/' > resultsrc &
while read host; read result <&3; do
echo "$host:$result"
done < hostsrc 3< resultsrc
'有:分隔条件them' - 你说:'回声 “$ {HOST} $ {}结果”' – devnull
对不起我应该正确解释,greps返回更多的结果。我得到了一个主机字符串列表和一个结果列表。返回的字符串和整数的顺序是正确的,例如HOST [0]和RESULT [0]匹配。我想并排显示它们。 –
提供来自results.txx文件的示例数据。 – anubhava