How to view a file content without comments in Linux ?

Here we will check various ways how to check a file on Linux bash shell by hiding the comments of the file and look for its content only.

Ideally if you see any file on Linux, it shows all contents including comments.

[root@nglinux ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Tue Nov 14 08:08:22 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=e91618e7-a10b-499a-9652-682de8b5cfa1  /  ext4  defaults,noatime    0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sr0                /mnt/cdrom            iso9660    defaults        0 0
debugfs 		/sys/kernel/debug 	debugfs defaults 0 0
[root@nglinux ~]# 

Now i want to suppress all comments and empty lines from the output.

To achieve this we can use following ways.

1. Remove all comment lines: Using grep command.

[root@nglinux ~]# cat /etc/fstab | grep -v "^#" 

UUID=e91618e7-a10b-499a-9652-682de8b5cfa1  /  ext4  defaults,noatime    0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sr0                /mnt/cdrom            iso9660    defaults        0 0
debugfs 		/sys/kernel/debug 	debugfs defaults 0 0
[root@nglinux ~]# 

2. Remove all comment lines: Using awk command.

[root@nglinux ~]# awk '!/^#/' /etc/fstab

UUID=e91618e7-a10b-499a-9652-682de8b5cfa1  /  ext4  defaults,noatime    0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sr0                /mnt/cdrom            iso9660    defaults        0 0
debugfs 		/sys/kernel/debug 	debugfs defaults 0 0
[root@nglinux ~]# 

Sometimes, we have scenarios when there are too many empty lines also available, for this we can remove empty lines also.

I prefer to use below command to achieve this scenario.

Remove comments and empty lines from output

[root@nglinux ~]# while read line; do if [[ $line != "" ]];then echo $line; fi done < /etc/fstab | grep -v '^#'
UUID=e91618e7-a10b-499a-9652-682de8b5cfa1 / ext4 defaults,noatime 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/sr0 /mnt/cdrom iso9660 defaults 0 0
debugfs /sys/kernel/debug debugfs defaults 0 0
[root@nglinux ~]# 

I hope you liked the trick.

Do post your comments/suggestions below so that it can be useful for others as well.

Leave a Reply

Your email address will not be published.