Skip to main content
  1. Blogs/

Tracking progress for a long running pipe command

·131 words·1 min·
linux

Issue
#

I was trying to count the number of occurrences of a word in a file on Ubuntu. This typically isn’t a big deal:

grep TERM myfile.txt | wc -l

However this file is nearly 200gb and I’d like some indication of how far along I am.

#pv to the rescue

I came across this post on StackOverflow: Tracking a program’s progress reading through a file?

pv (Pipe Viewer) is “a terminal-based tool for monitoring the progress of data through a pipeline.” Looks like exactly what I needed:

SIZE=$(ls -l myfile.txt | awk ‘{print $5}’); grep TERM myfile.txt | pv -s $SIZE | wc -l

SIZE in this case will be an upper bound, since pv will not receive that much data due to the grep command filtering the file.