World.
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
The
Iphone
of
Apple
company.
Hello
World.
The
Iphone
of
Apple
company.
My
name
is
Friendfish.
Hello
World.
Apple
and
Nokia.
实现命令及过程如下:[plain]1、文本行去重
(1)排序
由于uniq命令只能对相邻行进行去重复 *** 作,所以在进行去重前,先要对文本行进行排序,使重复行集中到一起。
$
sort
test.txt
Apple
and
Nokia.
Apple
and
Nokia.
Hello
World.
Hello
World.
Hello
World.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
The
Iphone
of
Apple
company.
(2)去掉相邻的重复行
$
sort
test.txt
|
uniq
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
2、文本行去重并按重复次数排序
(1)首先,对文本行进行去重并统计重复次数(uniq命令加-c选项可以实现对重复次数进行统计。)。
$
sort
test.txt
|
uniq
-c
2
Apple
and
Nokia.
4
Hello
World.
1
I
wanna
buy
an
Apple
device.
1
My
name
is
Friendfish.
2
The
Iphone
of
Apple
company.
(2)对文本行按重复次数进行排序。
sort
-n可以识别每行开头的数字,并按其大小对文本行进行排序。默认是按升序排列,如果想要按降序要加-r选项(sort
-rn)。
$
sort
test.txt
|
uniq
-c
|
sort
-rn
4
Hello
World.
2
The
Iphone
of
Apple
company.
2
Apple
and
Nokia.
1
My
name
is
Friendfish.
1
I
wanna
buy
an
Apple
device.
(3)每行前面的删除重复次数。
cut命令可以按列 *** 作文本行。可以看出前面的重复次数占8个字符,因此,可以用命令cut
-c
9-
取出每行第9个及其以后的字符。
$
sort
test.txt
|
uniq
-c
|
sort
-rn
|
cut
-c
9-
Hello
World.
The
Iphone
of
Apple
company.
Apple
and
Nokia.
My
name
is
Friendfish.
I
wanna
buy
an
Apple
device.
下面附带说一下cut命令的使用,用法如下:[plain]cut
-b
list
[-n]
[file
...]
cut
-c
list
[file
...]
cut
-f
list
[-d
delim][-s][file
...]
上面的-b、-c、-f分别表示字节、字符、字段(即byte、character、field);
list表示-b、-c、-f *** 作范围,-n常常表示具体数字;
file表示的自然是要 *** 作的文本文件的名称;
delim(英文全写:delimiter)表示分隔符,默认情况下为TAB;
-s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)
三种方式中,表示从指定的范围中提取字节(-b)、或字符(-c)、或字段(-f)。
范围的表示方法:
n
只有第n项
n-
从第n项一直到行尾
n-m
从第n项到第m项(包括m)
-m
从一行的开始到第m项(包括m)
-
从一行的开始到结束的所有项
在写这篇文章的时候,用到了vim的大小写转化的快捷键:gu变小写,gU变大写。结合ctrl+v能够将一片文字中的字符进行大小写转换,非常好用。
linux去重命令是什么呢?在介绍uniq命令之前,我们先来新建在下面的案例中需要用到的文件/tmp/uniq.txt,内容如下
默认情况下uniq只会检索相邻的重复数据从而去重。在/tmp/uniq.txt中虽然“onmpw web site” 有三条,但是其中一条是和其他两条不相邻的,所以只去重了一条,同理“error php function”也是这种情况。
鉴于以上的检索机制,所以uniq一般情况下要和sort命令一块儿使用。
复制代码
# sort 1.txt | uniq
alpha css web
cat linux command
error php function
hello world
onmpw web site
recruise page site
repeat no data
wello web site
复制代码
现在再看是不是所有的重复项都已经经过去重处理了。
好了,小试牛刀一把以后,下面我们开始对uniq命令的选项进行简单的介绍。
-c 统计每一行数据的重复次数
复制代码
sort 1.txt | uniq -c
1 alpha css web
1 cat linux command
2 error php function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
复制代码
我们看 “error php function”出现了两次,“onmpw web site”出现了三次。其余的都没有重复项所以为1。
-i 忽略大小写
在1.txt中添加一行数据 “Error PHP function”
复制代码
cat 1.txt
alpha css web
cat linux command
error php function
hello world
onmpw web site
onmpw web site
wello web site
Error PHP function
recruise page site
error php function
repeat no data
onmpw web site
复制代码
复制代码
sort 1.txt | uniq –c
1 alpha css web
1 cat linux command
2 error php function
1 Error PHP function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
复制代码
我们看结果,uniq默认是区分大小写的。使用-i可以忽略掉大小写问题
复制代码
sort 1.txt | uniq –c –i
1 alpha css web
1 cat linux command
3 error php function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
复制代码
现在再看是不是大小写已经忽略掉了。
-u 只输出没有重复的数据
复制代码
sort 1.txt | uniq –iu
alpha css web
cat linux command
hello world
recruise page site
repeat no data
wello web site
复制代码
看到没,结果中的“error php function”和“onmpw web site”都没有被输出。
-w N 表示从第一个字符开始只检索N个字符来判重。
复制代码
sort 1.txt | uniq –iw 2
alpha css web
cat linux command
error php function
hello world
onmpw web site
recruise page site
wello web site
复制代码
这里我们让uniq只对前两个字符进行检索,recruit 和 repeat前两个字符都是re,所以这两行也被认为是重复的。
-f N 表示略过前面N个字段,从第N+1个字段开始检索重复数据。以空格符或者tab键为分隔符。
复制代码
sort 1.txt | uniq –icf 2
1 alpha css web
1 cat linux command
3 error php function
1 hello world
4 onmpw web site
1 repeat no data
1 wello web site
复制代码
我们在结果中可以看到,这是略过前面的2个字段,从第三个字段开始判重的。“recruise page site” 和 “onmpw web site”的第三个字段相同,所以被认为是相同的数据。但是我们看到,“wello web site”和“onmpw web site”不但第三个字段相同,第二个也相同。那为什么它不被计入“onmpw web site”的重复数据中呢。对于这个问题就要回到前面说的,uniq只检测相邻的数据是否是重复的。
要解决这个问题还需要在sort命令上着手。还记得sort命令的-k选项吗,没错,我们就用它来解决。
复制代码
sort –k 2 1.txt | uniq –icf 2
1 alpha css web
1 cat linux command
1 repeat no data
1 recruise page site
3 error php function
4 onmpw web site
1 hello world
复制代码
我们看,是不是解决了。
-s N表示略过前面N个字符,关于这个选项的例子我们这里就不再举了,该选项和-f N的用法差不多。只不过-f N是略过前面N个字段;-s是略过前面N个字符。
-d 只输出有重复项的第一条的数据。
sort 1.txt | uniq -idw 2
repeat no data
error php function
onmpw web site
结果只有这三条。为什么会有“repeat no data”这条数据,这里注意-w 2的应用。
-D 对于重复项全部输出
复制代码
sort 1.txt | uniq –iDw 2
repeat no data
recruise page site
error php function
error php function
Error PHP function
onmpw web site
onmpw web site
onmpw web site
复制代码
好了,关于uniq的选项的所有常用的命令已经都介绍完了。关于uniq更详细的信息可以使用命令info uniq。
由于ubuntu日志文件syslog 和 kern.log 时刻在增长,一会儿就使得根目录文件夹不够用了,需使用如下命令清理sudo -i
然后输入密码,执行:
echo >/var/log/syslog
echo >/var/log/kern.log
就可以了.
打开日志文件夹:cd /var/log,
输入du -sh可以查看占用的磁盘空间(du -h --max-depth=1 /var/log/*)
输入du -sm查看文件总数
使用sudo find /var/log/ -type f -mtime +30 -exec rm -f {} \删除30天之前的旧文件(P.S:这里的天数30可以修改为其它值):
ubuntu系统日志查看器
在系统日志里,可以查看系统相关事件记录,出错信息等;
1、系统日志查看器
1)点菜单“系统 - 系统管理 - 系统日志查看器”,打开系统日志查看器窗口;
2)窗口左侧是项目,右边是详细记录;
3)其中 Xorg 是显示服务,auth是安全验证,boot是启动,daemon是进程,kern是内核,messages是消息,syslog是系统,user是用户;
4)有新消息的项目会以粗体显示,查看以后恢复正常;
ubuntu日志管理方法
ubuntu下var-log下各个日志文件的作用说明
/var/log/alternatives.log-更新替代信息都记录在这个文件中
/var/log/apport.log -应用程序崩溃记录
/var/log/apt/ -用apt-get安装卸载软件的信息
/var/log/auth.log -登录认证log
/var/log/boot.log -包含系统启动时的日志。
/var/log/btmp-记录所有失败启动信息
/var/log/Consolekit - 记录控制台信息
/var/log/cpus - 涉及所有打印信息的日志
/var/log/dist-upgrade - dist-upgrade这种更新方式的信息
/var/log/dmesg-包含内核缓冲信息(kernel ringbuffer)。在系统启动时,显示屏幕上的与硬件有关的信息
/var/log/dpkg.log - 包括安装或dpkg命令清除软件包的日志。
/var/log/faillog- 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
/var/log/fontconfig.log -与字体配置有关的log。
/var/log/fsck - 文件系统日志
/var/log/faillog -包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
/var/log/hp/
/var/log/install/
/var/log/jokey.log
/var/log/kern.log –包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog —记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
/var/log/faillog –包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
/var/log/lightdm/
/var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
/var/log/mail.err-类似于上面的
/var/log/news/
/var/log/pm-powersave.log
/var/log/samba/ –包含由samba存储的信息。
/var/log/syss.log
/var/log/speech-dispacher/
/var/log/udev
/var/log/ufw.log
/var/log/upstart/
/var/log/uattended-upgrades/
/var/log/wtmp —包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
/var/log/xorg.*.log— 来自X的日志信息。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)