To view just the uncommented lines of text in a config file
Tutorial details | |
---|---|
Difficulty | Easy (rss) |
Root privileges | No |
Requirements | grep/egrep/sed |
Time | 1m |
grep command example to strip out data
You can use the gerp command as follows:
$ grep -v "^#" /path/to/config/file
$ grep -v "^#" /etc/apache2/apache2.conf
Sample outputs:
ServerRoot "/etc/apache2" LockFile /var/lock/apache2/accept.lock PidFile ${APACHE_PID_FILE} Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> <IfModule mpm_worker_module> StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxClients 150 MaxRequestsPerChild 0 </IfModule> <IfModule mpm_event_module> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} AccessFileName .htaccess <Files ~ "^\.ht"> Order allow,deny Deny from all Satisfy all </Files> DefaultType text/plain HostnameLookups Off ErrorLog /var/log/apache2/error.log LogLevel warn Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf Include /etc/apache2/httpd.conf Include /etc/apache2/ports.conf LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %O" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined Include /etc/apache2/conf.d/ Include /etc/apache2/sites-enabled/
To suppress blank lines use egrep command, run:
egrep -v "^#|^$" /etc/apache2/apache2.conf ## or pass it to the page such as more or less ## egrep -v "^#|^$" /etc/apache2/apache2.conf | less ## Bash function ###################################### ## or create function or alias and use it as follows ## ## viewconfig /etc/squid/squid.conf ## ####################################################### viewconfig(){ local f="$1" [ -f "$1" ] && command egrep -v "^#|^$" "$f" || echo "Error $1 file not found." }
Sample output:
Understanding grep/egrep command line options
The -v option invert the sense of matching, to select non-matching lines. This option should work under all posix based systems. The regex ^$ matches and removes all blank lines and ^# matches and removes all comments that starts with a “#”.
sed Command example
GNU / sed command can be used as follows:
$ sed '/ *#/d; /^ *$/d' /path/to/file
$ sed '/ *#/d; /^ *$/d' /etc/apache2/apache2.conf
GNU or BSD sed can update your config file too. The syntax is as follows to edit files in-place, saving backups with the specified extension such as .bak:
sed -i'.bak.2015.12.27' '/ *#/d; /^ *$/d' /etc/apache2/apache2.conf
For more info see man pages – sed(1)
- How To Use grep Command In Linux / UNIX
- Regular Expressions In grep
- Search Multiple Words / String Pattern Using grep Command
- Grep Count Lines If a String / Word Matches
- Grep From Files and Display the File Name
- How To Find Files by Content Under UNIX
- grep command: View Only Configuration File Directives
🐧 8 comments so far... add one ↓
Category | List of Unix and Linux commands |
---|---|
File Management | cat |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Network Utilities | dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • jobs • killall • kill • pidof • pstree • pwdx • time |
Searching | grep • whereis • which |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
Thats a trick I’ve been using for years, but have came up with a better way to do it than you:
egrep -v '^#|^$' /etc/httpd/conf/httpd.conf
Your sed line does the exact same thing in removing empty lines. Egrep is more concise.
# egrep -v ‘^#|^$’ dovecot.conf
-su: ^$’: command not found
not quite foolproof :)
Same trick here but with cat -s
grep -v "^#" httpd.conf | cat -s
Indeed, jeff has demonstrated a better way.
@sss: Clearly… you aren’t typing the command the same as I did. Why? Because the pipe is being interpreted by the shell and is trying to run it. That tells me that you didn’t actually put it in the single quotes aka ‘ ‘ like your command says. If you did, the shell would not be able to interpret it. Well unless your shell is something really really buggy and I don’t think thats the case as too much would break.
Wow, Jeff coming back literally years later to correct sss, hah
Look closer.
sss posted his reply to Jeff’s original comment years after the OP was made. Jeff responded to sss a matter of hours after sss made his reply.
Who me? I’m just passing by… =P
hi, is there a table comparing the syntax between regex in sed and grep? Otherwise could you help me to write in sed the command, check a string, that it should contains cafe, it should have no more then 6 alpha characters and not 3 immediate repeating of the number, or char like cafewaterloo, is ok, caffe111waterloo is not allowed, but cafe 101 waterloo is ok for example
With Vim
Only view Uncommented Lines, include blank lines
:g!/^#
alternatively, and/or: Only view and supress blank lines
:g!/^#\|^$
alternatively, and/or:
To copy into register a (“some vim clipboard”), first delete register a
qaq
and then, make search and that append into register a
g!/^#\|^$/y A
Open new buffer, paste search result
"aP
Tested gVim 7.4 only.