UNIX Interview Questions
UNIX Interview Questions
8. How to replace the n-th line in a file with a new line in Unix?
echo $?
11. How will you find which operating system your system is running on in UNIX?
uname -a
The d option here deletes the lines from 21 to the end of the file
15. Write a command to print the last line of a file?
The tail command can be used to display the last lines from a file.
tail -1 filename
ls -a | grep '^\.'
filename
10. How do you display from the 5th character to the end of the line from a file?
cut -c 5- filename
2. Write a command to search for the file 'map' in the current directory?
4. Write a command to remove the first number on all lines that start with "@"?
5. How to print the file names in a directory that has the word "term"?
grep -l term *
The '-l' option make the grep command to print only the filename without printing the content of the file. As soon
as the grep command finds the pattern in a file, it prints the pattern and stops searching other lines in the file.
6. How to run awk command specified in a file?
awk -f filename
7. How do you display the calendar for the month march in the year 1985?
The cal command can be used to display the current month calendar. You can pass the month and year as
arguments to display the required year, month combination calendar.
cal 03 1985
This will display the calendar for the March month and year 1985.
8. Write a command to find the total number of lines in a file?
wc -l filename
Vmstat: reports on virtual memory statistics for processes, disk, tape and CPU activity.
3. Write a command to find the sum of bytes (size of file) of all files in a directory.
ls -l | grep '^-'| awk 'BEGIN {sum=0} {sum = sum + $5} END {print sum}'
4. Write a command to print the lines which end with the word "end"?
The '$' symbol specifies the grep command to search for the pattern at the end of the line.
5. Write a command to select only those lines containing "july" as a whole word?
The '-w' option makes the grep command to search for exact whole words. If the specified pattern is
found in a string, then it is not considered as a whole word. For example: In the string "mikejulymak",
the pattern "july" is found. However "july" is not a whole word in that string.
6. How to remove the first 10 lines from a file?
7. Write a command to duplicate each line in a file?
9. Write a command to list the files in '/usr' directory that start with 'ch' and then display the number of
lines in each file?
wc -l /usr/ch*
Another way is
1. How to display the processes that were run by your user name ?
2. Write a command to display all the files recursively with path under current directory?
4. Write a command to display the third and fifth character from each line of a file?
5. Write a command to print the fields from 10th to the end of the line. The fields in the line are
delimited by a comma?
6. How to replace the word "Gun" with "Pen" in the first 100 lines of a file?
7. Write a Unix command to display the lines in a file that do not contain the word "RAM"?
The '-v' option tells the grep to print the lines that do not contain the specified pattern.
8. How to print the squares of numbers from 1 to 10 using awk command
10. How to find out the usage of the CPU by the processes?
The top utility can be used to display the CPU usage by the processes.
1. Write a command to remove the prefix of the string ending with '/'.
The basename utility deletes any prefix ending in /. The usage is mentioned below:
basename /usr/local/bin/file
3. How to replace the second occurrence of the word "bat" with "ball" in a file?
4. How to remove all the occurrences of the word "jhon" except the first one in a line with in the entire
file?
5. How to replace the word "lite" with "light" from 100th line to last line in a file?
6. How to list the files that are accessed 5 days ago in the current directory?
7. How to list the files that were modified 5 days ago in the current directory?
8. How to list the files whose status is changed 5 days ago in the current directory?
ls -l|grep '^-'|wc -l
2. Write a command to display the first 10 characters from each line of a file?
3. The fields in each line are delimited by comma. Write a command to display third field from each line
of a file?
4. Write a command to print the fields from 10 to 20 from each line of a file?
5. Write a command to print the first 5 fields from each line?
6. By default the cut command displays the entire line if there is no delimiter in it. Which cut option is
used to suppress these kind of lines?
The -s option is used to suppress the lines that do not contain the delimiter.
7. Write a command to replace the word "bad" with "good" in file?
8. Write a command to replace the word "bad" with "good" globally in a file?
10. Write a command to switch the two consecutive words "apple" and "mango" in a file?
11. Write a command to display the characters from 10 to 20 from each line of a file?
1. Write a command to print the lines that has the the pattern "july" in all the files in a particular
directory?
grep july *
This will print all the lines in all files that contain the word july along with the file name. If any of the
files contain words like "JULY" or "July", the above command would not print those lines.
2. Write a command to print the lines that has the word "july" in all the files in a directory and also
suppress the file name in the output.
grep -h july *
3. Write a command to print the lines that has the word "july" while ignoring the case.
grep -i july *
The option i make the grep command to treat the pattern as case insensitive.
4. When you use a single file as input to the grep command to search for a pattern, it won't print the
filename in the output. Now write a grep command to print the file name in the output without using the
'-H' option.
The /dev/null or null device is special file that discards the data written to it. So, the /dev/null is always
an empty file.
Another way to print the file name is using the '-H' option. The grep command for this is
5. Write a command to print the file names in a directory that does not contain the word "july"?
grep -L july *
The '-L' option makes the grep command to print the file names that do not contain the specified
pattern.
6. Write a command to print the line numbers along with the line that has the word "july"?
The '-n' option is used to print the line numbers in a file. The line numbers start from 1
7. Write a command to print the lines that starts with the word "start"?
The '^' symbol specifies the grep command to search for the pattern at the start of the line.
8. In the text file, some lines are delimited by colon and some are delimited by space. Write a
command to print the third field of each line.
awk '{ if( $0 ~ /:/ ) { FS=":"; } else { FS =" "; } print $3 }' filename
10. Write a command to print the second and third line of a file without using NR.
11. How to create an alias for the complex command and remove the alias?
The alias utility is used to create the alias for a command. The below command creates alias for ps
-aef command.
unalias pg
date '+%Y-%m-%d'
Find is one of the powerful utility of Unix (or Linux) used for searching the files in a directory hierarchy.
The syntax of find command is
!find
This will execute the last find command. It also displays the last find command executed along with the
result on the terminal.
2. How to find for a file using name?
This will find all the files with name "sum.java" in the current directory and sub-directories.
3. How to find for files using name and ignoring case?
This will find all the files with name "sum.java" while ignoring the case in the current directory and subdirectories.
4. How to find for a file in the current directory only?
This will find for the file "sum.java" in the current directory only
5. How to find for files containing a specific word in its name?
It displayed all the files which have the word "java" in the filename
6. How to find for files in a specific directory?
This will look for the files in the /etc directory with "java" in the filename
7. How to find the files whose name are not "sum.java"?
This is like inverting the match. It prints all the files except the given file "sum.java".
8. How to limit the file searches to specific directories?
You can see here the find command displayed all the files with name "sum.java" in the current directory
and sub-directories.
a. How to print the files in the current directory and one level down to the current directory?
b. How to print the files in the current directory and two levels down to the current directory?
./bkp/var/tmp/files/sum.java
./bkp/var/tmp/sum.java
./bkp/var/sum.java
./bkp/sum.java
10. How to find the largest file in the current directory and sub directories
The find command "find . -type f -exec ls -s {} \;" will list all the files along with the size of the file. Then
the sort command will sort the files based on the size. The head command will pick only the first line
from the output of sort.
11. How to find the smallest file in the current directory and sub directories
find . -type s
b. Finding directories
find . -type d
| head -1
find . -type f
14. How to find the files which are modified after the modification of a give file.
This will display all the files which are modified after the file "sum.java"
15. Display the files which are accessed after the modification of a give file.
16. Display the files which are changed after the modification of a give file.
This will display the files which have read, write, and execute permissions. To know the permissions of
files and directories use the command "ls -l".
18. Find the files which are modified within 30 minutes.
find . -mtime -1
20. How to find the files which are modified 30 minutes back
21. How to find the files which are modified 1 day back.
find . -atime -1
25. Display the files which are changed within 2 days.
find . -ctime -2
26. How to find the files which are created between two files.
So far we have just find the files and displayed on the terminal. Now we will see how to perform some
operations on the files.
1. How to find the permissions of the files which contain the name "java"?
Alternate method is
2. Find the files which have the name "java" in it and then display only the files which have "class" word
in them?
This will delete all the files which have the word java" in the file name in the current directory and subdirectories.
Similarly you can apply other Unix commands on the files found using the find command. I will add
more examples as and when i found.
If you like this post, then please share it on Google by clicking on the +1 button.
Awk is one of the most powerful tools in Unix used for processing the rows and columns in a file. Awk has built
in string functions and associative arrays. Awk supports most of the operators, conditional blocks, and loops
available in C language.
One of the good things is that you can convert Awk scripts into Perl scripts using a2p utility.
The basic syntax of AWK:
Here the actions in the begin block are performed before processing the file and the actions in the end block
are performed after processing the file. The rest of the actions are performed while processing the file.
Examples:
Create a file input_file with the following data. This file can be easily created using the output of ls -l.
0 Dec
8 21:39 p1
8 21:15 t1
8 21:38 t2
8 21:38 t3
8 21:39 t4
8 21:39 t5
From the data, you can observe that this file has rows and columns. The rows are separated by a new line
character and the columns are separated by a space characters. We will use this file as the input for the
examples discussed here.
1. awk '{print $1}' input_file
Here $1 has a meaning. $1, $2, $3... represents the first, second, third columns... in a row respectively. This
awk command will print the first column in each row as shown below.
-rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--
To print the 4th and 6th columns in a file use awk '{print $4,$5}' input_file
Here the Begin and End blocks are not used in awk. So, the print command will be executed for each row it
reads from the file. In the next example we will see how to use the Begin and End blocks.
2. awk 'BEGIN {sum=0} {sum=sum+$5} END {print sum}' input_file
This will prints the sum of the value in the 5th column. In the Begin block the variable sum is assigned with
value 0. In the next block the value of 5th column is added to the sum variable. This addition of the 5th column
to the sum variable repeats for every row it processed. When all the rows are processed the sum variable will
hold the sum of the values in the 5th column. This value is printed in the End block.
3. In this example we will see how to execute the awk script written in a file. Create a file sum_column and
paste the below script in that file
#!/usr/bin/awk -f
BEGIN {sum=0}
{sum=sum+$5}
END {print sum}
This awk command checks for the string "t4" in the 9th column and if it finds a match then it will print the entire
line. The output of this awk command is
8 21:39 t4
square of 1 is 1
square of 2 is 4
square of 3 is 9
square of 4 is 16
square of 5 is 25
Notice that the syntax of if and for are similar to the C language.
Awk Built in Variables:
You have already seen $0, $1, $2... which prints the entire line, first column, second column... respectively. Now
we will see other built in variables with examples.
FS - Input field separator variable:
So far, we have seen the fields separted by a space character. By default Awk assumes that fields in a file are
separted by space characters. If the fields in the file are separted by any other character, we can use the FS
variable to tell about the delimiter.
6. awk 'BEGIN {FS=":"} {print $2}' input_file
OR
awk -F: '{print $2} input_file
This will print the result as
39 p1
15 t1
38 t2
38 t3
39 t4
39 t5
center 0
center 17
center 26
center 25
center 43
center 48
center:0
center:17
center:26
center:25
center:43
center:48
Note: print $4,$5 and print $4$5 will not work the same way. The first one displays the output with space as
delimiter. The second one displays the output without any delimiter.
NF - Number of fileds variable:
The NF can be used to know the number of fields in line
8. awk '{print NF}' input_file
This will display the number of columns in each row.
NR - number of records variable:
The NR can be used to know the line number or count of lines in a file.
9. awk '{print NR}' input_file
This will display the line numbers from 1.
10. awk 'END {print NR}' input_file
This will display the total number of lines in the file.
String functions in Awk:
Some of the string functions in awk are:
index(string,search)
length(string)
split(string,array,separator)
substr(string,position)
substr(string,position,max)
tolower(string)
toupper(string)
Advanced Examples:
1. Filtering lines using Awk split function
The awk split function splits a string into an array using the delimiter.
The syntax of split function is
split(string, array, delimiter)
Now we will see how to filter the lines using the split function with an example.
1 U,N,UNIX,000
2 N,P,SHELL,111
3 I,M,UNIX,222
4 X,Y,BASH,333
5 P,R,SCRIPT,444
Required output: Now we have to print only the lines in which whose 2nd field has the string "UNIX" as the 3rd
field( The 2nd filed in the line is separated by comma delimiter ).
The ouptut is:
1 U,N,UNIX,000
3 I,M,UNIX,222
awk '{
split($2,arr,",");
if(arr[3] == "UNIX")
print $0
} ' file.txt