While the need to locate a specific line in a text file may not be a very useful feature in regular prose text, for managing structured code such as scripts and XML files that are common in OS X, being able to identify a specific line or two may be quite useful.
If you have attempted shell scripting in OS X, you may find that when your scripts run into errors you will be given a brief description of the problem that includes the line where the problem occurred. While the use of BBEdit, TextWrangler, and other powerful text editors will make finding these lines a fairly simple task, if you are using Apple's built-in editors (including Terminal-based editors) then finding line numbers are more hidden options.
The first option is for Apple's default editor TextEdit, which can be used as a crude editor for plain-text files. For this program a new hint on MacOSXHints today outlines a relatively hidden but potentially useful feature which allows you to jump to a specific line number in any opened document. Simply press Command-L in a document, and then enter the line number and the program will jump to and select that line. You can also use relative selections such as "+2" to select the next two lines from the location of the cursor (see the hint for more details).
In addition to TextEdit and third-party text editors, you can use some convenient Terminal editors and commands to view the line numbers of a script file. A couple of the common editors in OS X are pico (nano) and vi (vim), which will be familiar to those who have used BSD systems, but less so to those just starting out with scripting. In both of these programs, you can reveal line numbers by the following actions:
- pico/nano -- Press Control-C to reveal the current cursor location
- vi/vim -- Enter the VI command ":set number"
The final option in the OS X Terminal is to use the "cat" command which will output a document's contents line-by-line to the Terminal window, and is a great way to preview a document. The "cat" command offers an option to number its output, so if you type "cat -n" followed by a single space, then drag your document to the Terminal window and press Enter to execute the command, it will show the document's contents in a numbered list.
With this option, one potentially useful application is to create a line-numbered version of any plain text document by redirecting the output to a new file, such as the following example:
cat -n ~/path/to/document.txt > ~/numberedfile.txt
This command will number the lines of the file "document.txt" and save it in a new file called "numberedfile.txt" in your home folder, which you can then open in any program.