我有以下代码,并希望将HOST
和RESULT
并排显示,:
将它们分开。
HOST=`grep pers results.txt | cut -d':' -f2 | awk '{print $1}'`
RESULT=`grep cleanup results.txt | cut -d':' -f2 | awk '{print $1}' | sed -e 's/K/000/' -'s/M/000000/'`
echo ${HOST}${RESULT}
任何人都可以协助最终命令显示这些,我只是获取所有主机,然后是所有结果。
答案 0 :(得分:2)
你可能想要这个:
HOST=( `grep pers results.txt | cut -d':' -f2 | awk '{ print $1 }'` ) #keep the output of the command in an array
RESULT=( `grep cleanup results.txt | cut -d':' -f2 | awk '{ print $1 }' | sed -e 's/K/000/' -'s/M/000000/'` )
for i in "${!HOST[@]}"; do
echo "${HOST[$i]}:${RESULT[$i]}"
done
答案 1 :(得分:0)
一个没有数组的版本,使用额外的文件句柄来读取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
中进行替换,或者管道到{来自sed
内的{1}}。但这都是偏离主题的,所以我把它作为练习留给读者。)
awk