【发布时间】:2026-01-12 09:30:01
【问题描述】:
我有两个相同的脚本。在其中一个我使用 cat,而在另一个则全部是 AWK。
这是第一个:
#!/bin/bash
lines=$(cat /etc/passwd | wc -l)
for ((i=1 ; i <=$lines ; i++ ))
do
user=$(cat /etc/passwd | awk -F : -vi=$i 'NR==i {print $1}')
uid=$(cat /etc/passwd | awk -F : -vi=$i 'NR==i {print $3}')
gid=$(cat /etc/passwd | awk -F : -vi=$i 'NR==i {print $4}')
shell=$(cat /etc/passwd | awk -F : -vi=$i 'NR==i {print $7}')
echo -e "User is : $user \t Uid is : $uid \t Gid is : $gid \t Shell is : $shell"
done
这是第二个:
#!/bin/bash
lines=$(awk 'END {print NR}' /etc/passwd)
for ((i=1 ; i <=$lines ; i++ ))
do
user=$(awk -F : -vi=$i 'NR==i {print $1}' /etc/passwd)
uid=$(awk -F : -vi=$i 'NR==i {print $3}' /etc/passwd)
gid=$(awk -F : -vi=$i 'NR==i {print $4}' /etc/passwd)
shell=$(awk -F : -vi=$i 'NR==i {print $7}' /etc/passwd)
echo -e "User is : $user \t Uid is : $uid \t Gid is : $gid \t Shell is : $shell"
done
第一个脚本所用时间如下(带有CAT语句的脚本):
real 0m0.215s
user 0m0.023s
sys 0m0.238s
对于只有 AWK 语句的第二个脚本,所用时间如下:
real 0m0.132s
user 0m0.013s
sys 0m0.123s
我认为与调用其他外部函数来读取文件相比,文件的 awk 处理要快得多。我很乐意就结果进行讨论。
我认为 AWK 在某些情况下表现更好。
这里是关于这个问题的:
【问题讨论】:
标签: bash time awk benchmarking cat