我怎样才能减少切割的处理时间?

  • 本文关键字:处理 时间 bash macos cut
  • 更新时间 :
  • 英文 :


我有一个文本文件,有一大堆行(1000行),它们都有4位文本,由;分隔。

下面是我使用的for循环,用于遍历每一行:

while IFS= read -r line; do
let liner++
if [[ liner -eq "1" ]]; then
continue
fi
name=$(echo "${line}" | cut -d';' -f1)
fullname=$(echo "${line}" | cut -d';' -f2)
id=$(echo "${line}" | cut -d';' -f3)
test=$(echo "${line}" | cut -d';' -f4)
echo "${GREEN}$(($liner-1))) ${name} ${ORANGE}v${test} ${RED}(${id})${NC}"
stuff+=("${fullname}")
done < list.txt

在它完成运行之前大约需要5秒,我相信它来自所有这些cut (name, fullname, id, test)变量。加快这一进程的最佳解决方案是什么?

Awk无疑提供了一个更好的解决方案,但是如果您现在不想学习Awk,您可以通过使用read将行拆分为字段来大大加快函数的速度:

liner=0
stuff=()
while IFS=; read -r name fullname id test; do
echo "$GREEN$((++liner))) $name ${ORANGE}v$test $RED($id)$NC"
stuff+=("$fullname")
done < <(tail -n+2 1000num.txt)

最新更新