10.1 cut

cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。

1.基本用法

cut [选项参数]  filename

说明:默认分隔符是制表符

2.选项参数说明

表1-55

选项参数

功能

-f

列号,提取第几列

-d

分隔符,按照指定分隔符分割列

3.案例实操

(0)数据准备

[atguigu@hadoop101 datas]$ touch cut.txt
[atguigu@hadoop101 datas]$ vim cut.txt
dong shen
guan zhen
wo wo
lai lai
le le

(1)切割cut.txt第一列

[atguigu@hadoop101 datas]$ cut -d " " -f  cut.txt
dong
guan
wo
lai
le

(2)切割cut.txt第二、三列

[atguigu@hadoop101 datas]$ cut -d " " -f , cut.txt
shen
zhen
wo
lai
le

(3)在cut.txt文件中切割出guan

[atguigu@hadoop101 datas]$ cat cut.txt | grep "guan" | cut -d " " -f
guan

(4)选取系统PATH变量值,第2个“:”开始后的所有路径:

[atguigu@hadoop101 datas]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/atguigu/bin [atguigu@hadoop102 datas]$ echo $PATH | cut -d: -f -
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/atguigu/bin

(5)切割ifconfig 后打印的IP地址

[atguigu@hadoop101 datas]$ ifconfig eth0 | grep "inet addr" | cut -d: -f  | cut -d" " -f1
192.168.1.102

10.2 sed

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

  1. 基本用法

sed [选项参数]  ‘command’  filename

  1. 选项参数说明

表1-56

选项参数

功能

-e

直接在指令列模式上进行sed的动作编辑。

  1. 命令功能描述

表1-57

命令

功能描述

a 

新增,a的后面可以接字串,在下一行出现

d

删除

s

查找并替换

  1. 案例实操

(0)数据准备

[atguigu@hadoop102 datas]$ touch sed.txt
[atguigu@hadoop102 datas]$ vim sed.txt
dong shen
guan zhen
wo wo
lai lai le le

(1)将“mei nv”这个单词插入到sed.txt第二行下,打印。

[atguigu@hadoop102 datas]$ sed '2a mei nv' sed.txt
dong shen
guan zhen
mei nv
wo wo
lai lai le le
[atguigu@hadoop102 datas]$ cat sed.txt
dong shen
guan zhen
wo wo
lai lai le le

注意:文件并没有改变

(2)删除sed.txt文件所有包含wo的行

[atguigu@hadoop102 datas]$ sed '/wo/d' sed.txt
dong shen
guan zhen
lai lai le le

(3)将sed.txt文件中wo替换为ni

[atguigu@hadoop102 datas]$ sed 's/wo/ni/g' sed.txt
dong shen
guan zhen
ni ni
lai lai le le

注意:‘g’表示global,全部替换

(4)将sed.txt文件中的第二行删除并将wo替换为ni

[atguigu@hadoop102 datas]$ sed -e '2d' -e 's/wo/ni/g' sed.txt
dong shen
ni ni
lai lai le le

10.3 awk

一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。

  1. 基本用法

awk [选项参数] ‘pattern1{action1}  pattern2{action2}...’ filename

pattern:表示AWK在数据中查找的内容,就是匹配模式

action:在找到匹配内容时所执行的一系列命令

  1. 选项参数说明

表1-55

选项参数

功能

-F

指定输入文件折分隔符

-v

赋值一个用户定义变量

  1. 案例实操

(0)数据准备

[atguigu@hadoop102 datas]$ sudo cp /etc/passwd ./

(1)搜索passwd文件以root关键字开头的所有行,并输出该行的第7列。

[atguigu@hadoop102 datas]$ awk -F: '/^root/{print $7}' passwd
/bin/bash

(2)搜索passwd文件以root关键字开头的所有行,并输出该行的第1列和第7列,中间以“,”号分割。

[atguigu@hadoop102 datas]$ awk -F: '/^root/{print $1","$7}' passwd
root,/bin/bash

注意:只有匹配了pattern的行才会执行action

(3)只显示/etc/passwd的第一列和第七列,以逗号分割,且在所有行前面添加列名user,shell在最后一行添加"dahaige,/bin/zuishuai"。

[atguigu@hadoop102 datas]$ awk -F : 'BEGIN{print "user, shell"} {print $1","$7} END{print "dahaige,/bin/zuishuai"}' passwd
user, shell
root,/bin/bash
bin,/sbin/nologin
。。。
atguigu,/bin/bash
dahaige,/bin/zuishuai

注意:BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行。

(4)将passwd文件中的用户id增加数值1并输出

[atguigu@hadoop102 datas]$ awk -v i= -F: '{print $3+i}' passwd
  1. awk的内置变量

表1-56

变量

说明

FILENAME

文件名

NR

已读的记录数

NF

浏览记录的域的个数(切割后,列的个数)

  1. 案例实操

(1)统计passwd文件名,每行的行号,每行的列数

[atguigu@hadoop102 datas]$ awk -F: '{print "filename:"  FILENAME ", linenumber:" NR  ",columns:" NF}' passwd
filename:passwd, linenumber:,columns:
filename:passwd, linenumber:,columns:
filename:passwd, linenumber:,columns:

(2)切割IP

[atguigu@hadoop102 datas]$ ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk -F " " '{print $1}'
192.168.1.102

(3)查询sed.txt中空行所在的行号

[atguigu@hadoop102 datas]$ awk '/^$/{print NR}' sed.txt

10.4 sort

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。

  1. 基本语法

sort(选项)(参数)

表1-57

选项

说明

-n

依照数值的大小排序

-r

以相反的顺序来排序

-t

设置排序时所用的分隔字符

-k

指定需要排序的列

参数:指定待排序的文件列表

2. 案例实操

(0)数据准备

[atguigu@hadoop102 datas]$ touch sort.sh
[atguigu@hadoop102 datas]$ vim sort.sh
bb::5.4
bd::4.2
xz::2.3
cls::3.5
ss::1.6

(1)按照“:”分割后的第三列倒序排序。

[atguigu@hadoop102 datas]$ sort -t : -nrk   sort.sh
bb::5.4
bd::4.2
cls::3.5
xz::2.3
ss::1.6

shell专题(十):Shell工具(重点)的更多相关文章

  1. 【笔记】shell下的主要工具

    shell 下有很多工具是非常好的辅助. 一.自我精进的途径 1.help / --help :简要的帮助说明: help 是针对 shell 内建功能的帮助, gnu工具一般为 "程序名 ...

  2. shell脚本动画小工具

    shell脚本动画小工具 看gif图: shell脚本版 脚本内容如下: #!/usr/bin/env bash ## ---------------------------------------- ...

  3. linux学习(十)Shell中的控制语句

    目录 1. 条件测试语句 1.1 test语句 1.2[]语句 1.3文件测试 1.4字符串测试 1.5数值测试 1.5逻辑操作符 @(Shell中的控制语句) 1. 条件测试语句 测试语句十Shel ...

  4. Shell 编程 文本处理工具 sed

    本篇主要写一些shell脚本文本处理工具sed的使用. 概述 sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除.替换.添加 ...

  5. Linux Shell Web超级终端工具shellinabox

    Shell是Linux内核应用程序,是指“为使用者提供操作界面”的软件,也是命令解析器,它类似于Windows操作系统DOS下的cmd.exe应用程序.它接收用户命令,然后调用相应的应用程序,用户一般 ...

  6. 【shell】十分钟轻松入门;如果没入门,您吐口口水再走吧!

    一.什么是shell? Shell是什么? 1.Shell 是一个程序,Linux默认是用bash. Shell 是一个用 C 语言编写的程序,既是一种命令语言,又是一种程序设计语言,是用户使用Lin ...

  7. shell 编程 && bash 简介(shell 变量、shell操作环境、数据流重导向、管线命令、shell script)

    如何学习一门编程语言 数据类型 运算符 关键字 1 认识BASH 这个shell linux是操作系统核心,用户通过shell与核心进行沟通,达到我们想要的目的.硬件.核心.用户之间的关系: 原理:所 ...

  8. 修改shell 将当前shell(默认是bash B SHELL )改为csh C SHELL

     在修改当前shell时,用命令: usermod -s  /bin/csh   home     home 为 你所想要改变的用户地址     此处home 为家目录,一般自己创建的用户都会在家目录 ...

  9. Shell学习笔记 - Shell变量

    一.变量的命名 变量名必须以字母或下划线开头,由字母.数字.或下划线组成,变量名的长度不能超过255个字符. 二.变量的分类 1. 用户自定义变量 2. 环境变量 3. 位置参数变量 4. 预定义变量 ...

  10. 什么是shell? bash和shell有什么关系?

    什么是shell? bash和shell有什么关系? 博客分类: Linux   什么是Shell?      shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序 ...

随机推荐

  1. Spting:基于注解的组件化管理

    @Component,@Controller(控制层),@Service(业务层),@Repository(持久层) 以上四个注解的功能完全相同,不过在实际开发中,要在不同功能的类上加上响应的注解 1 ...

  2. 附024.Kubernetes_v1.18.3高可用部署架构二

    kubeadm介绍 kubeadm概述 参考<附003.Kubeadm部署Kubernetes>. kubeadm功能 参考<附003.Kubeadm部署Kubernetes> ...

  3. Tensorflow报错:OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized.

    参考: https://github.com/dmlc/xgboost/issues/1715 解决方法: I solved it with 'conda install nomkl'.

  4. Activity学习笔记1

    Activity概述 简单的理解Activity就是指Android手机或平板的一个屏,类似Window的一个窗口,浏览器的一个页面. Activity的4种状态 Activity的生命周期 创建Ac ...

  5. 添加现有项目到git仓库

    情景: 做了一个项目,需要放到git仓库里 为什么做这个记录? 我们一般的操作是先有仓库, 然后 git clone  到一个空文件夹.     然后再这个空文件夹里加项目文件.  再git push ...

  6. Beta冲刺<10/10>

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺--第十天(05.28) 作业正文 如下 其他参考文献 ... B ...

  7. 经典卷积神经网络算法(5):ResNet

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  8. 大型ECShop安装搬家升级错误问题最全攻略

    [引子] 最近将ECShop框架网站从租用服务器搬家至阿里云,虽然模块及功能上已经被修改的面目全非了,但基础部分还在. 在这个过程中遇到了很多的WARNING与ERROR,解决方案如下. [环境] 服 ...

  9. Linux 初始化系统 SystemV Upstart

    System V 特点 缺点: 启动时间长,init是串行启动,只有前一个进程启动完,才会启动下一个进程 启动脚本复杂,init只是执行启动脚本,不管其他事情,脚本需要自己处理各种情况,这往往使得脚本 ...

  10. 图灵学院-微服务11-分布式链路跟踪Sleuth详解

    当客户端访问到第一个service 1的时候,会生成当前链路追踪的一个全局的trance ID,在一次调用过Service1--Service2--Service3--Service4时,整个服务访问 ...