Week4 6
Week4 6
a) Use the sort command to sort the file mytable according to the first field. Call the
sorted file mytable (same name)
b) Print the file mytable
c) Use the cut and paste commands to swap fields 2 and 3 of mytable. Call it my table
(same name)
d) Print the new file, mytable
e) Logout of the system.
Mytable
121 sai 89 87 77 66 55
021 ram 90 76 54 67 89
221 king 91 67 45 87 55
002 ramana 87 76 56 54 47
322 sekhar 99 33 55 73 27
a. Use the sort command to sort the file mytable according to the first field. Call the
sorted file my table
$sort +1 mytable > mytable
or
$ sort -k 1 mytable > sortfile;cp sortfile mytable
Description:-
Sort:- is a simple and very useful command which will rearrange the lines in a text file so
that they are sorted, numerically and alphabetically.
Options
⮚ -b, --ignore-leading-blanks Ignore leading blanks.
⮚ -d, --dictionary-order Consider only blanks and alphanumeric characters.
-f, --ignore-case Fold lower case to upper case characters.
⮚ -g, --general-numeric-sort Compare according to general numerical value.
⮚ -i, --ignore-nonprinting Consider only printable characters.
⮚ -M, --month-sort Compare (unknown) < `JAN' < ... < `DEC'.
⮚ -h, --human-numeric-sort Compare human readable numbers (e.g., "2K", "1G").
⮚ -n, --numeric-sort Compare according to string numerical value.
⮚ -R, --random-sort Sort by random hash of keys.
⮚ --random-source=FILE Get random bytes from FILE.
⮚ -r, --reverse Reverse the result of comparisons.
⮚ --sort=WORD Sort according to WORD: general-numeric -g, human-numeric -h,
month -M, numeric -n, random -R, version -V.
⮚ -V, --version-sort Natural sort of (version) numbers within text.
Note that this command does not actually change the input file, data.txt. If you want to write
the
output to a new file, output.txt, redirect the output like this:
You can perform a reverse-order sort using the -r flag. For example, the following command:
sort -r data.txt
b. print the file mytable
cat mytable
c. Use the cut and paste commands to swap fields 2 and 3 of mytable. Call it my
table (same name)
Description:
Cut
Remove or "cut out" sections of each line of a file or files.
Syntax cut OPTION... [FILE]...
Options
⮚ -b, --bytes=LIST Select only the bytes from each line as specified in LIST. LIST
specifies a byte, a set of bytes, or a range of bytes; see Specifying LIST below.
⮚ -c, --characters=LIST Select only the characters from each line as specified in
LIST.
LIST specifies a character, a set of characters, or a range of characters; see Specifying
LISTbelow.
⮚ -d, --delimiter=DELIM use character DELIM instead of a tab for the field
delimiter.
⮚ -f, --fields=LIST select only these fields on each line; also print any line that
contains no delimiter character, unless the -s option is specified. LIST specifies a
field, a set of fields, or a range of fields; see Specifying LIST below.
⮚ -n This option is ignored, but is included for compatibility reasons.
⮚ --complement complement the set of selected bytes, characters or fields.
⮚ -s, --only-delimited do not print lines not containing delimiters.
⮚ --output-delimiter=STRING use STRING as the output delimiter string. The
default
is to use the input delimiter.
To "cut" only the third field of each line, use the command:
cut -f 3 data.txt
If instead you want to "cut" only the second-through-fourth field of each line, use the
command:
o/p:
If you want to "cut" only the first-through-second and fourth-through-fifth field of each line
(omitting the third field), use the command:
If you want the third field and every field after it, omitting the first two fields. In this case,
you could use the command:
cut -f 3- data.txt
Specifying a range with LIST also applies to cutting characters (-c) or bytes (-b) from a line.
For example, to output only the third-through-twelfth character of every line ofdata.txt, use
the command:
paste command:
The paste command displays the corresponding lines of multiple files side-by-side.
Syntax: paste [OPTION]... [FILE]...
Examples: paste file1.txt file2.txt
This command would display the contents of file1.txt and file2.txt, side-by-side, with
the
corresponding lines of each file separated by a tab.
$ cat file1
Linux
Unix
Solaris
HPUX
AIX
paste command with a single file:
1. paste command without any options is as good as the cat command when operated on
a single file.
$ paste file1
Linux
Unix
Solaris
HPUX
AIX
The '-' reads a line from the standard input. Two '-' reads 2 lines and pastes them side by side.
5.Merge a file by pasting the data into 2 columns using a colon separator:
$ paste -d':' - - < file1
Linux:Unix
Solaris:HPUX
AIX:
This is same as joining every 2 lines in a file.
The -d option can take multiple de-limiters. The 1st and 2nd columns is separated by ':',
whereas the 2nd and 3rd are separated by a ','.
paste command examples for multiple files handling
Let us consider a file, file2, with the following contents:
$ cat file2
Suse
Fedora
CentOS
OEL
Ubuntu
$cat /etc/passwd
c. Use the who command and redirect the result to a file called myfile1. Use the
more command to see the contents of myfile1.
OPTIONS
Option Description
⮚ -c Page through the file by clearing the window. (not scrolling).
⮚ -d Displays "Press space to continue, 'q' to quit"
⮚ -f Count logical lines rather than screen lines (wrapping text)
⮚ -l Ignores form feed (^L) characters.
⮚ -r Display all control characters.
⮚ -s Displays multiple blank lines as one blank line.
⮚ -u Does not display underline characters and backspace (^H).
⮚ -w Waits for a user to press a key before exiting.
⮚ -n Displays n lines per window.
⮚ +num Displays the file starting at line number num.
⮚ +/pattern Displays the file starting at two lines before the pattern.
d. Use the date and who commands in sequence (in one line) such that the output of
date will display on the screen and the output of who will be redirected to a file
called myfile2. Use the more command to check the contents of myfile2.