MST
星途 面试题库

面试题:复杂Bash管道的数据处理优化

有一个大文件(假设文件名为`large_file.txt`),其中每行是一些数据记录。你需要通过Bash管道实现以下功能:提取出每行中特定字段(假设为第3个字段,字段间以空格分隔),将提取出的字段内容转换为大写,去除重复项,并统计不同内容的数量。要求考虑性能优化,避免中间结果占用过多内存,描述你的实现思路及具体命令。
13.5万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 使用 cut 命令提取每行的第3个字段。
  2. 使用 tr 命令将提取出的字段内容转换为大写。
  3. 使用 sortuniq 命令去除重复项,同时利用 uniq -c 统计不同内容的数量。
  4. 为了优化性能,利用Bash管道将这些命令连接起来,避免中间结果占用过多内存。

具体命令

cut -d ' ' -f 3 large_file.txt | tr '[:lower:]' '[:upper:]' | sort | uniq -c

解释:

  • cut -d ' ' -f 3 large_file.txt:以空格为分隔符,提取 large_file.txt 每行的第3个字段。
  • tr '[:lower:]' '[:upper:]':将输入的内容中的小写字母转换为大写字母。
  • sort:对输入内容进行排序,为 uniq 命令做准备,因为 uniq 只能识别相邻的重复行。
  • uniq -c:去除重复行,并在每行前加上该行出现的次数。