【需求】:将文本文件中空行和注释行去掉
【实现】:
grep -v "^/" test1.txt | grep -v "^$" >> test2.txt
【注意】:test1.txt为需要处理的文档,test2.txt是转换后文本,必须每行开头没有空行。
【参考】
在Linux上处理一些数据文件时,有时候需要将其中的空行过滤掉,系统中提供的各种工具都可以完成这个功能。将常用的介绍如下吧:
1. grep
grep . data.txt
grep -v '^$' data.txt
grep '[^$]' data.txt
2. sed
sed '/^$/d' data.txt
sed '/^\s*$/d' data.txt #这个命令还可将完全空格、tab等组成的空行删掉。
# The character class \s will match the whitespace characters and .
3. awk
awk NF data.txt # 这个也可以将空格、tab等组成的空行删掉。
awk '!/^$/' data.txt
4. tr
tr -s '\n' < data.txt
貌似这些可以处理的命令里面,“grep . data.txt”这个的效率是比较高的;如果处理大数据量时可以比较一些这些命令的性能。
1、使用grep -v "^#" 来去掉注释行,其中:-v 就是取相反的 ^# 表示以#开头的行
eg. grep -v "^#" /etc/vsftpd/vsftpd.conf (也可以使用“>”来重写配置文件)
2、有时也会连同空行一起去掉,使用管道符来完成(^$表示空行 )
eg. grep -v "^#" httpd.conf | grep -v "^$" >> vsftpd.conf
上面用了 2次 grep 过滤命令 ,也就是把空行和注解行过滤掉,再把剩下的内容追加保存为原
来的配置文件 vsftpd.conf 这个时候就文件里的内容就没有注解行和空行了,,,,
3、备注:在更改配置文件时,建议先对配置文件做一下备份,对配置文件不熟悉的建议不要用这种方法,配置文件中的注解行还是有一定的帮助的。
cp -a httpd.conf httpd.conf.bak
4、shell储备知识:
^一行的开始 ^d以开头的 ^..1 第三个为1的字符 ^字符要放在匹配的字符前面
$一行的末尾 ^$ 表示空行 ^.$匹配一行一个字符的 $字符要放在匹配的字符后面
*匹配任意个字符 包括0个字符 .表示单个字符
\可以屏蔽一个特殊的字符 \*\.pas 这里的*是特殊字符,这样就表示*.pas这个文件
逗号可以分割不同的匹配字符如[S,s]表示S或者s都可以
-表示一个范围,[1-9],[a-z],[A-Z] [1-9 A-Z a-z]任意的字符或者数字
A\{2\}B 表示A出现了2次 AAB
A\{4,\}B 表示A至少出现4次 AAAAB,AAAAAB
A\{2,4\}B 表示A出现2-4次 AAB AAAB AAAAB
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\} 0-999.0-999.0-999.0-999
阅读(2588) | 评论(0) | 转发(0) |