字符串处理命令
Posted mdddm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串处理命令相关的知识,希望对你有一定的参考价值。
字符串处理的命令
字符排序命令-sort
用法:sort [选项]... [文件]...
[root@localhost ~]# cat sort.txt
b:3
c:2
a:4
e:5
d:1
f:11
[root@localhost ~]# sort sort.txt
a:4
b:3
c:2
d:1
e:5
f:11
注意:什么都不加,默认按照首字母排序
-t:指定分隔符(默认空格为分隔符)
-k:指定按照哪一列排序
-n:按照阿拉伯数字大小排序(默认是按照数字的首个字符排序)
-r:倒叙
[root@localhost ~]# sort -t ‘:‘ -k 2 -n sort.txt
d:1
c:2
b:3
a:4
e:5
f:11
[root@localhost ~]# sort -nrk 2 -t ‘:‘ sort.txt
字符去重命令-uniq
用法:uniq [选项]... [文件]
注意:去重,必须在排好序之后才能去重
-c:count 统计,计数,重复的值有多少
[root@localhost ~]# sort uniq.txt
123
123
456
456
789
abc
abc
abc
abc
[root@localhost ~]# sort uniq.txt|uniq
123
456
789
abc
[root@localhost ~]# sort uniq.txt|uniq -c
2 123
2 456
1 789
4 abc
字符截取命令-cut
用法:cut [选项]... [文件]...
-d:指定分隔符
-f:指定区域
-c:按照字符截取
[root@localhost ~]# cut -d ‘.‘ -f 1-4 ip
[root@localhost ~]# cut -d ‘ ‘ -f 2,6 info.txt |cut -d ‘,‘ -f 2
18 133411023
字符替换命令-tr
[root@localhost ~]# cat info.txt
I‘m zls,18 years old QQ 133411023
[root@localhost ~]# cat info.txt |tr ‘QQ‘ ‘qq‘
I‘m zls,18 years old qq 133411023
统计命令-wc
[root@localhost ~]# wc /etc/services
11176 61033 670293 /etc/services
[root@localhost ~]# wc -l /etc/services
11176 /etc/services
[root@localhost ~]# wc -w /etc/services
61033 /etc/services
[root@localhost ~]# wc -c /etc/services
670293 /etc/services
注意:在wc命令,什么选项都不加的情况下,统计出文件的行数,单词数,和字符数
-l:按照行数统计
-w:按照单词数统计
-c:按照字符数统计
练习题:
1.过滤出/etc/passwd以nologin结尾的内容,并统计行数
[root@localhost ~]# grep ‘nologin$‘ /etc/passwd |wc -l
14
[root@localhost ~]# grep -c ‘nologin$‘ /etc/passwd
14
2.使用ifconfig命令获取当前的IP地址
1. [root@localhost ~]# ifconfig eth0|grep -w ‘inet‘|cut -d ‘ ‘ -f 10
2. [root@localhost ~]# ifconfig eth0|grep ‘netmask‘|cut -d ‘ ‘ -f 10
3. [root@localhost ~]# ifconfig eth0|grep -w ‘inet‘|cut -c 14-23
4. [root@localhost ~]# ifconfig |awk ‘NR==2 {print $2}‘
5. [root@localhost ~]# ifconfig |sed -nr ‘2s#^.*inet (.*) n.*$#1#gp‘
3.将/etc/sysconfig/selinux文件中的SELINUX=enforcing替换为SELINUX=disabled
[root@localhost ~]# sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g‘ /etc/sysconfig/selinux
4.分析如下日志内容,每个域名被访问次数
[root@student tmp]# cat web.log
http://www.driverzeng.com/index.html
http://www.driverzeng.com/1.html
http://post.driverzeng.com/index.html
http://mp3.driverzeng.com/index.html
http://www.driverzeng.com/3.html
http://post.driverzeng.com/2.html
[root@localhost ~]# cut -d ‘/‘ -f3 web.log |sort |uniq -c
1 mp3.driverzeng.com
2 post.driverzeng.com
3 www.driverzeng.com
5.用普通用户身份登陆虚拟机上完成练习
[root@localhost ~]# useradd zls
MacBook-Pro:~ driverzeng$ ssh zls@10.0.0.200
6.在用户家目录下创建6个文件 song1.mp3 ~ song6.mp3
[zls@localhost ~]$ touch song{1..6}.mp3
-rw-rw-r--. 1 zls zls 0 3月 25 10:01 song1.mp3
-rw-rw-r--. 1 zls zls 0 3月 25 10:01 song2.mp3
-rw-rw-r--. 1 zls zls 0 3月 25 10:01 song3.mp3
-rw-rw-r--. 1 zls zls 0 3月 25 10:01 song4.mp3
-rw-rw-r--. 1 zls zls 0 3月 25 10:01 song5.mp3
-rw-rw-r--. 1 zls zls 0 3月 25 10:01 song6.mp3
7.把上题创建的songX.mp3文件移动到Music目录下(不存在则创建)
[zls@localhost ~]$ mkdir Music
[zls@localhost ~]$ mv song* Music/
8.在用户家目录下创建三个目录,分别为 friends,family,work
[zls@localhost ~]$ mkdir friends
[zls@localhost ~]$ mkdir family
[zls@localhost ~]$ mkdir work
[zls@localhost ~]$ mkdir {friends,family,work}
9.切换到friends目录下,把Music目录下的song1.mp3 ~ song3.mp3 拷贝到当前目录
# 方法1:
[zls@localhost ~]$ cd friends/
[zls@localhost friends]$ cp ../Music/song{1..3}.mp3 .
# 方法2:
[zls@localhost friends]$ cp /home/zls/Music/song{1..3}.mp3 /home/zls/friends/
10.切换到family目录下,把Music目录下的song4.mp3 ~ song6.mp3 移动到当前目录
[zls@localhost family]$ mv ../Music/song{4..6}* .
11.切换到用户主目录
[zls@localhost family]$ cd
12.删除family目录
[zls@localhost ~]$ rm -fr family/
13.切换到friends目录,把目录下的所有文件删除
[zls@localhost friends]$ rm -f ./*
14.切换到主目录,把friends目录删除.
[zls@localhost ~]$ rm -fr friends/
以上是关于字符串处理命令的主要内容,如果未能解决你的问题,请参考以下文章
Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段