Grep in Microsoft Word?
I'd like to pull all lines with a given string from a word document. In unix world... grep does this without a glitch. Windows is less than obvious for me.
With Cygwin (or access to a Linux machine) you could
antiword file.doc | grep "my phrase"
or
catdoc file.doc | grep "my phrase"
There are lots of command-line file format converters out there to grep in a similar fashion.
Purely in-Word solution could be to Ctrl+F (Find), and then Find All - however, I'm not sure if all versions of MS Word have Find All button.
catdoc
segfaults on every .doc
/.docx
file I give it, and antiword
just tells me my document "is not a Word Document". Do you know of any other options?
docx2txt
exists in Debian repositories - might work. I'd also look into the OpenOffice/LibreOffice command-line format conversion utility (unoconv), which could be used for the same purpose.
I know this sounds primitive, but what's stopping you from saving the file as .txt and then ripping it apart to your liking.
Not got enough rep to comment but I can see this doc vs docx issue discussed so anyone chasing the thread (like I was) may find this helpful.
You do not need a special tool for docx files. docx are zipped XML files.
To extract and strip the XML try something based on
unzip -p "*.docx" word/document.xml | sed -e 's/<[^>]\{1,\}>//g; s/[^[:print:]]\{1,\}//g'
from command line fu
What does "line" mean in a Word context? The displayed line, which changes if you do anything to the page formatting? The paragraph? Something else?
You can do a bunch of stuff with Word's find-and-replace functions, including changing the formatting and other non-obvious things, but all of them will only act on the find-what text itself, not on any surrounding text.
There is support for MS documents - Word, PowerPoint, Excel - in CRGREP which I've developed as a free opensource tool. It also greps other hard to search stuff like database tables, images, audio, archives, PDF and combinations of these. Have fun.
PowerGREP will do exactly that for you, and fast - but not free. It's worth every penny, though, in my opinion. Plus, there is a 30-day free trial.
Fast, free, open-source, and cross-platform solution: https://github.com/phiresky/ripgrep-all