Linux provides a lot of handy commands for manipulating text files. This post explains how to use a collection of them. Credit: Paul Huxley Whenever you need to work with lists that are stored as text files on Linux – especially long ones – you can take advantage of some easy commands to make manipulating them a lot easier. Any text file can be easily sorted, but you can also randomly arrange the lines, number them or join files when two share an initial common field. In fact, if you only want to see every other line or every fifth line in a file, you can do that too. This post runs through the commands to do all of these things. Sorting files The sort command makes sorting text files very easy. To view the contents of a text file in sorted order, all you need to do is type a command like this: $ sort myfile If you want to save the output or add it to the bottom of another file, one of the commands below will do that for you. $ sort myfile > sortedfile $ sort myfile >> otherfile Once you add lines to an existing file as shown in the second command above, you may need to sort it again. The commands below would do that for you and will ensure that the file has the original name. $ sort otherfile > otherfile.new $ mv otherfile.new otherfile The sort command also has quite a few options. For example, if you have a file with dates in alphabetic order, you could switch to displaying it in annual date order with the -M option in the command on the right below: $ cat birthdays $ sort -M birthdays Jan 4, 1972 Jan 4, 1972 Mar 18, 1949 Jan 8, 1954 May 1, 1976 Mar 18, 1949 Jan 8, 1954 May 1, 1976 Sep 23, 1979 Aug 6, 1956 Aug 6, 1956 Sep 23, 1979 To sort a long list of colors and display them in columns, use a command like this one: $ sort colors | column Aqua Brown Gold Navy blue Purple Tomato Yellow Azure Chocolate Green Navy blue Red Turquoise Black Cyan Grey Olive Salmon Violet Blue Cyan Lime Orange Sİlver Wheat Bronze Dark blue Maroon Pink Teal White Shuffling lines To randomly arrange the lines in a text file, use the shuf (shuffle) command. For example, if you want to shuffle a list of friends each month to randomly select who to take out to lunch, you could use a command like this: $ shuf friends | head -2 Sam Patty Run the command a few times in a row and you should get a different listing each time. Sorting by number or text If you want to sort the lines of a file numerically (assuming they are not listed numerically to begin with), use the sort -n option. Remember, however, that any lines that don’t start with a number will appear first $ sort -n story | head -5 1 Once upon a time 2 There was a Linux elf 3 who liked to surprise 4 users by introducing 5 new commands. Displaying every Nth line from a text file The awk command provides a way to view every other, third, fourth or Nth line in a file by using an NR (record number) argument as shown in the commands below. The first command ensures that only the 2nd, 4th, 6th, etc. lines are displayed. The second would display every 7th line. Think of the first as saying “if the line number divided by 2 leaves a remainder of 0, then display it. $ awk 'NR % 2 == 0' filename $ awk ‘NR % 7 == 0’ filename Here are two examples –- one displaying every second line, the other every third line of a file. The file being used has numbered lines to make what’s happening more clear. $ awk 'NR % 2 == 0' myfile | head -6 2 There was a Linux elf 4 users by introducing 6 8 didn't know much about 10 line. As a result, none 12 tried actually worked $ awk 'NR % 3 == 0' myfile | head -6 3 who liked to surprise 6 9 working on the command 12 tried actually worked 15 That's all we know about 18 command "cheat sheet" and To do the same thing with a list of colors, the output lines will not be numbered. This command displays the 13th and 26th line in the colors file. $ awk 'NR % 13 == 0' colors Turquoise Chocolate Numbering lines To number lines in a text file, use the nl (number lines) command. In the example below, the command adds line numbers to the colors file. $ nl colors 1 Black 2 Grey 3 Red 4 Blue 5 Orange 6 White 7 Brown 8 Pink 9 Yellow 10 Green 11 Purple 12 Maroon 13 Turquoise 14 Cyan 15 Navy blue 16 Gold 17 Tomato 18 Teal 19 Lime 20 Cyan 21 Wheat 22 Salmon 23 Olive 24 Aqua 25 Violet 26 Chocolate 27 Azure 28 Sİlver 29 Bronze 30 Dark blue 31 Navy blue Wrap-up As you can see, Linux provides a lot of handy commands for manipulating the content of text files. The man pages for the commands explained in this post will offer additional insights into how these commands work. Related content how-to How to examine files on Linux Linux provides very useful options for viewing file attributes, such as owners and permissions, as well as file content. By Sandra Henry Stocker Oct 24, 2024 6 mins Linux how-to 8 easy ways to reuse commands on Linux Typing the same command again and again can become tiresome. Here are a number of ways you can make repeating commands – or repeating commands but with some changes – a lot easier than you might expect. By Sandra Henry-Stocker Oct 15, 2024 5 mins Linux news SUSE Edge upgrade targets Kubernetes and Linux at the edge SUSE Edge 3.1 includes a new stack validation framework and an image builder tool that are aimed at improving the scalability and manageability of complex Kubernetes and Linux edge-computing deployments. By Sean Michael Kerner Oct 15, 2024 6 mins Edge Computing Linux Network Management Software how-to Lesser-known xargs command is a versatile time saver Boost your Linux command line options and simplify your work with xargs, a handy tool for a number of data manipulation tasks. By Sandra Henry Stocker Oct 11, 2024 6 mins Linux PODCASTS VIDEOS RESOURCES EVENTS NEWSLETTERS Newsletter Promo Module Test Description for newsletter promo module. Please enter a valid email address Subscribe