Sometimes, we might have a requirement wherein we need to display the file contents with its line number. In this article, we will see the different ways in which we can achieve this line numbering of file.
Let us take a sample file, say file1, with the following contents:
$ cat file1 Ashwath, Mangalore Abirami, Chennai Swetha, Karwar1. Unix has a specific command, nl, whose very purpose is to do line numbering. This command is very rarely known or used:
$ nl file1 1 Ashwath, Mangalore 2 Abirami, Chennai 3 Swetha, Karwar2. The simplest of all is using the cat command. cat command has an option "-n" which exactly does this line numbering.
$ cat -n file1 1 Ashwath, Mangalore 2 Abirami, Chennai 3 Swetha, Karwar3. awk can also be used to get the line numbering using the awk special variable, NR.
$ awk '{print NR, $0}' file1 1 Ashwath, Mangalore 2 Abirami, Chennai 3 Swetha, KarwarNR contains the line number of the line being processed by awk currently. And hence the above output.
4. perl has a special variable, $., which is same as the NR of awk, gives line number at any point of a file.
$ perl -ne '{print $.," ", $_}' file1 1 Ashwath, Mangalore 2 Abirami, Chennai 3 Swetha, Karwar5. sed command can be tweaked a bit to get the line numbering:
$ sed '=' file1 | sed 'N;s/\n/ /' 1 Ashwath, Mangalore 2 Abirami, Chennai 3 Swetha, KarwarTo understand the above sed command, you need to execute the commands separately. The '=' operator gives a line number to every line. However, the line number is one line, the contents move to the next line. In order to join the number and the file contents, we use the 'N' function of sed to join it. Using 'N', we substitute the new line character by 2 spaces, and hence the result as above.
Happy Numbering!!!!
No comments:
Post a Comment