Yesterday, I’ve received the following error: head: illegal line count -- -4 as I was trying to remove the last 4 lines from a sitemap.xml file. This is called negative arguments. It was weird since it only happened on a macOS machine.
Prerequisites
- macOS
- Homebrew
Solution
Step 1. I found out that the native version of head doesn’t support negative line counts. Instead, install GNU’s ghead version which is part of the coreutils Homebrew package.
brew install coreutils
Step 2. Replace head with ghead. For instance:
curl https://devcoops.com/sitemap.xml | sed '/^<loc>/!d' | sed -e 's/<[^>]*>//g' | ghead -n -4 > temp
Conclusion
Using regular expressions for parsing XML is strongly discouraged since it’s a hard thing to do in practice. There are better ways and tools for sure.
Feel free to leave a comment below and if you find this tutorial useful, follow our official channel on Telegram.