Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1413492
  • 博文数量: 241
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2253
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-11 22:27
个人简介

--

文章分类

全部博文(241)

文章存档

2021年(3)

2019年(6)

2018年(1)

2017年(9)

2016年(21)

2015年(50)

2014年(125)

2013年(26)

我的朋友

分类: LINUX

2015-03-29 13:58:04

【需求】:将文本文件中空行和注释行去掉

【实现】:
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
阅读(2489) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~