cut
1.描述
在文件中负责剪数据的工具,可以从文件的每一行剪切字符、字节和字段,并将他们输出。
2.基本语法
cut [选项参数] filename
参数说明:
-d:指定分隔符
-f:提取的列号
3.案例
数据准备:
first second third
aa bb cc
a1 b1 c1
haha gaga lala
cut.txt
(1)取第一列数据,以空格切分
[user1@master shell]$ cut -d " " -f 1 cut.txt
(2)取第一、第二列数据
[user1@master shell]$ cut -d " " -f 1,2 cut.txt
(3)在文件中切割出haha
[user1@master shell]$ cat cut.txt |grep haha|cut -d " " -f 1
(4)选取系统PATH变量值,第2个:开始的所有路径
[user1@master shell]$ echo $PATH |cut -d ":" -f 3-
(5)切割ifconfig的echo的inet addr的IP
[user1@master shell]$ ifconfig eth0 | grep "inet addr" |cut -d ":" -f 2 | cut -d " " -f 1
sed
1. 描述
sed是一种流编辑器,它每次处理一行内容。处理时会先将当前行数据存储在临时缓冲区中,接着用sed命令处理缓冲区中的数据,处理完把数据发送到屏幕,再去处理下一行,直到处理完文件的最后一行。文件内容不会被改变,除非使用重定向存储输出。
2. 基本语法
sed [选项参数] ‘command’ filename
(1)选项参数:
-e:直接在指令列模式上进行sed的动作编辑
(2)命令功能:
a:新增(add)
d:删除(delete)
s:查找并替换
……
3. 案例
数据准备:
sed.txt
ni wo
hao shi
a hero
(1)将kai xin添加到第二行
[user1@master shell]$ sed -e "2a kai xin" sed.txt
(2)删除第一行
[user1@master shell]$ sed -e "2d" sed.txt
(3)删除文件中包含 “wo” 的行
[user1@master shell]$ sed -e "/wo/d" sed.txt
(4)将文件中wo替换成ni
[user1@master shell]$ sed -e "s/wo/ni/" sed.txt
(5)同时执行(3)(4)
[user1@master shell]$ sed -e "/wo/d" -e "s/wo/ni/" sed.txt
awk
1.描述
awk是一个文本分析工具,把文件逐行读入,以空格为默认分隔符将每行切分,切开部分再进行分析处理。
2.基本语法
awk[选项参数] ‘pattern1{action1} pattern2{action}……’ filename
(1)选项参数:
-F:指定输入的文件分隔符
-v:定义一个用户变量
(2)pattern和action
pattern:表示awk在数据中查找的内容,就是匹配模式
action:内容匹配成功后,所执行的一系列命令
3.内置变量
FILENAME:文件名
NR:已读的记录数
NF:切割后的列数
4.案例
数据准备(将根目录下的etc下的passwd文件拷贝过来)
[user1@master shell]$ sudo cp /etc/passwd ./
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user:x:500:500::/home/user:/bin/bash
user1:x:501:501::/home/user1:/bin/bash
mysql:x:502:502::/home/mysql:/bin/bash
apache:x:48:48:Apache:/var/www:/sbin/nologin
cloudera-scm:x:498:498:Cloudera Manager:/var/lib/cloudera-scm-server:/sbin/nologin
(1)在文件中搜索以user1开头的所有行,并且输出第一列
[user1@master shell]$ awk -F : '/^user1/{print $1}' passwd
(2)在文件中搜索以user1开头的所有行,并且输出第一列和第七列,中间用“&&”分隔
[user1@master shell]$ awk -F : '/^user1/{print$1"&&"$7}' passwd
(3)只显示文件的第一和第七列,并用“&&”分隔,并且在第开始添加一行USER&&SHELL,最后添加jiangjiang&&/bin/sbin
[user1@master shell]$ awk -F : 'BEGIN{print"USER&&SEHLL"}{print $1"&&"$7}END{print "jiangjiang&&bin/sbin"}' passwd
(4)将文件中第三列+100
[user1@master shell]$ awk -F : -v i=100 '{print $3+i}' passwd
(5)输出文件的文件名,每行的行号,每行的列数
[user1@master shell]$ awk -F : '{print"FileName:"FILENAME",Number:"NR",ColNum:"NF}' passwd
sort
1.描述
将文件进行排序。
2.基本语法
sort (选项)(参数)
选项:
-n:按数值大小排序
-r:倒序
-t:设置排序时所用的分隔符
-k:指定排序的列
参数:
待排序的文件列表
3.案例
准备数据sort.txt
a,12,24
b,45,56
c,56,2
d,7,10
按照第二列进行数值倒序排列
[user1@master shell]$ sort -t "," -nrk 3 sort.txt