- Listing Files
- File Contents
- Manipulating Files
- Summary
- Terms
File Contents
In the last section we looked at listing files and directories with the ls command. In this section we will look at the cat and wc commands. The cat command lets you view the contents of a file. The wc command gives you information about the number of words and lines in a file.
cat
To view the contents of a file, we can use the cat (short for concatenate) command as follows:
cat [opts] file1 ... fileN
Here opts are one or more of the options understood by cat, and file1...fileN are the names of the files whose contents should be printed. The options, opts, are optional and can be omitted. Two commonly used options are discussed later in this section.
The following example illustrates the use of cat:
$ cat fruits
This command prints the contents of a file called fruits:
Fruit Price/lbs Quantity Banana $0.89 100 Peach $0.79 65 Kiwi $1.50 22 Pineapple $1.29 35 Apple $0.99 78
If more than one file is specified, the output includes the contents of both files concatenated together. For example, the following command outputs the contents of the files fruits and users:
$ cat fruits users Fruit Price/lbs Quantity Banana $0.89 100 Peach $0.79 65 Kiwi $1.50 22 Pineapple $1.29 35 Apple $0.99 78 ranga vathsa amma
Numbering Lines
The -n option of cat will number each line of output. It can be used as follows:
$ cat -n fruits
This produces the output
1 Fruit Price/lbs Quantity 2 Banana $0.89 100 3 Peach $0.79 65 4 Kiwi $1.50 22 5 Pineapple $1.29 35 6 Apple $0.99 78 7
From this output, you can see that the last line in this file is blank. We can ask cat to skip numbering blank lines using the -b option as follows:
$ cat -b fruits
Now the output resembles the following:
1 Fruit Price/lbs Quantity 2 Banana $0.89 100 3 Peach $0.79 65 4 Kiwi $1.50 22 5 Pineapple $1.29 35 6 Apple $0.99 78
The blank line is still presented in the output, but it is not numbered. If the blank line occurs in the middle of a file, it is printed but not numbered:
$ cat -b hosts 1 127.0.0.1 localhost loopback 2 128.32.43.52 soda.berkeley.edu soda
If multiple files are specified, the contents of the files are concatenated in the output, but line numbering is restarted at 1 for each file. As an illustration, the following command,
$ cat -b fruits users
produces the output
1 Fruit Price/lbs Quantity 2 Banana $0.89 100 3 Peach $0.79 65 4 Kiwi $1.50 22 5 Pineapple $1.29 35 6 Apple $0.99 78 1 ranga 2 vathsa 3 amma
wc
Now let's look at getting some information about the contents of a file. Using the wc command (short for word count), we can get a count of the total number of lines, words, and characters contained in a file. The basic syntax of this command is:
wc [opts] files
Here opts are one or more of the options given in Table 3.1, and files are the files you want examined. The options, opts, are optional and can be omitted.
Table 3.1 wc Options
Option |
Description |
-l |
Count of the number of lines. |
-w |
Count of the number of words. |
-m |
Count of the number of characters. This option is available on Mac OS X, OpenBSD, Solaris, and HP-UX. This option is not available on FreeBSD and Linux systems. |
-c |
Count of the number of characters. This option is the Linux and FreeBSD equivalents of the -m option. |
When no options are specified, the default behavior of wc is to print out a summary of the number of lines, words, and characters contained in a file. For example, the command
$ wc fruits
produces the following output:
8 18 219 fruits
The first number, in this case 8, is the number of lines in the file. The second number, in this case 18, is the number of words in the file. The third number, in this case 219, is the number of characters in the file. At the end of the line, the filename is listed. When multiple files are specified, the filename helps to identify the information associated with a particular file.
If more than one file is specified, wc gives the counts for each file along with a total. For example, the command
$ wc fruits users
produces output similar to the following:
8 18 219 fruits 3 3 18 users 11 21 237 total The output on your system might be slightly different.
Counting Lines
To count the number of lines, the -l (as in lines) option can be used. For example, the command
$ wc -l fruits
produces the output
8 fruits
The first number, in this case 8, is the number of lines in the file. The name of the file is listed at the end of the line.
When multiple files are specified, the number of lines in each file is listed along with the total number of lines in all of the specified files. As an example, the command
$ wc -l fruits users
produces the output
8 fruits 3 users 11 total
Counting Words
To count the number of words in a file, the -w (as in words) option can be used. For example, the command
$ wc -w fruits
produces the output
18 hosts
The first number, in this case 18, is the number of words in the file. The name of the file is listed at the end of the line.
When multiple files are specified, the number of words in each file is listed along with the total number of words in all of the specified files. As an example, the command
$ wc -w fruits users
produces the output
18 fruits 3 users 21 total
Counting Characters
To count the number of characters, we need to use either the -m or the -c option. The -m option is available on Mac OS X, OpenBSD, Solaris, and HP-UX. On FreeBSD and Linux systems, the -c option should be used instead.
For example, on Solaris the command
$ wc -m fruits
produces the output
219 fruits
The same output is produced on Linux and FreeBSD systems using the command
$ wc -c fruits
The first number, in this case 219, is the number of characters in the file. The name of the file is listed at the end of the line.
When multiple files are specified, the number of characters in each file is listed along with the total number of characters in all the specified files. As an example, the command
$ wc -m fruits users
produces the output
219 hosts 18 users 237 total
Combining Options
The options to wc can be grouped together and specified in any order. For example, to obtain a count of the number of lines and words in the file fruits, we can use any of the following commands:
$ wc -w -l fruits $ wc -l -w fruits $ wc -wl fruits $ wc -lw fruits
The output from each of these commands is identical:
8 18 fruits
The output lists the number of words in the files, followed by the number of lines in the file. The filename is specified at the end of the line. When multiple files are specified, the information for each file is listed along with the appropriate total values.