shell工具

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值