linux Shell学习笔记第一天_其它

以下是Shell学习1-2天学习笔记

————————-我是分隔符—————————

硬件去执行, 内核与硬件之间进行操作。

命令解析器。

shell脚本的组成元素

  1. 系统命令
  2. 文本处理工具(sort、grep、sed、awk…)
  3. 变量
  4. 条件判断
  5. 环循结构
  6. 函数

    Shell Scripts Center(SSC)

———————————————————————————-

非负Grep / awk

几天。 统计Wc

Sort 排序 sort|head / sed
字段处理 awk

数据区域判断 awk |wc

显示文本: echo [选项] 文本

        -n 不要自动换行

        -e 解析转义符

            a 发出警告音

            c 最后不加上换行符号

            f 换行

            r 回车

彩色文本

Echo –e “33[40;35m….]”

echo “Hello,world”

echo –e “33[40;35mHell,world33[0m"

sort [选项]输入文件

    -o 输出文件

    -d 按字典顺序排序 a-z

    -n 按数字大小输出 0-9

    -r 逆序输出 z-a 9-0

    -k 指定分类是域上的数字分类

    -t 域分割符;用非空格或tab键分割域

more /etc/passwd 分页显示

sort –d /etc/passwd|more 中间的|是反倒符号。 将前面处理的交给后面处理     先排序。后分页显示

sort –k3 –n –r –t: /etc/passwd|more

从大到小

wc [参数] [文件名]

    -c 统计字符数量

    -l统计行数

    -w 统计单词数量 空格区分

diff [选项] 文件/目录 文件/目录

diff /etc/passwd /etc/passwd.bak

    -q 仅显示有无差异,不显示详细的信息

    -c 显示全部内文,并标出不同之处。

    -b 不检查空格字符的不同

    -B 不检查空白行

    -r 比较子目录中的文件。

grep 搜索匹配 支持正则表达式

grep

    -c 只打印匹配模式的行编号记数

    -I 在匹配文本时忽略大小写

    -n 在每行前显示其行编号

    -v 逆向输出,打印不匹配的行

    -f file 要匹配的字符串列表在filezhong

grep ‘[Tt]his' file1.txt 设置大小写

grep ‘^[^#]‘ file2.txt 不匹配行首

grep “s…n” file3.txt 匹配任意字符

sed 行编辑命令
    s 替代

    i 插入

    a 附加

    d    删除全部匹配的行

    D    删除首次匹配的行

sed可以做什么(”行”为基础)

    删除

    改变

    添加

    插入

    替换

示例

sed –n '1,4p' /etc/passwd p是打印 -n 不显示原文件 打印1-4行

sed ‘/80/D' file.txt 首次出现80的行进行删除

sed ‘s/var/usr/g' file.txt 将所有的var替换成usr g代表所有

sed '50,$s/help/man/g' file.txt 替换从50行到最后一行的help替换为man 前49不管

awk 可以处理列,也可以处理行,可以定位到第几行,第几列

awk [选项] ‘awk脚本' 输入文件

    -F fs 使用fs作为输入记录的字段分隔符 = sort –t

    -f filename 从文件filename读取awk_script(awk脚本)

    -v var=value 为awk_script 设置变量

awk的内置变量

变量 功能 默认
FS =大写F 输入字段分隔符 空格或tab
RS 输入记录分隔符 换行
OFS =out FS 输出字段分隔符 空格或tab
ORS 输出记录分隔符 换行
NF 常用 当前记录非空字段的编号  
NR 常用 从所有文件读入的记录号  

 

示例

awk –F : ‘{print NR,$1,$2}' /etc/passwd

awk –F : ‘{print NR,$1,$NF}' /etc/passwd $NF 提取最后一行

awk –F : ‘NR%10==5{PRINT nr,$0}' /etc/passwd NR= 当前处理的行数 除10求余=5打印当前的行数,进行输出 $0 整行输出,比如5、15、25 打印出来

awk –F : ‘NR==8,NR==13 {print NR,$0}' /etc/passwd 指定8行和13行。

awk工作原理(工具)

$NF $NR $1 第一列 $2 第二列 $0 一整行

实际测试

awk –F: ‘{print $1,$3}'/etc/passwd

awk –F: ‘{print $1,$NF}'/etc/passwd

awk –F: ‘{print NR,$1,$NF}'/etc/passwd NR行号

awk –F: ‘NR==5,NR==8{print NR,$1,$NF}'/etc/passwd 指定5-8行

awk –F: ‘NR%10==5{print NR,$1,$NF}'/etc/passwd 除10求余

课程示例测试

1、grep –v “-” file.txt 去除所有带负号的数据 -v显示没有的 没有的话则显示只有-的

2、wc -l file.txt显示所有行数 grep –v “-” file.txt |wc –l 统计所有没有负数的

3、sort –n –r –k4 file.txt |sed –n '1p' 排序第四列 没有分隔符(即空格),-n数字 –r 从大到小 sed管道 显示第一行 sed –n不显示原文件

    sort –n –r –k4 file.txt |head -1 读取第一个数据 head 第一行

4、awk ‘{if($NF>3){print $0}}' file.txt NF 最后一列大于3 则打印一整行

5、awk ‘{if($4>0,&&$4<15){print $0}}' file.txt 列出第四列 大于0小于15 输出整行

    awk ‘{if($4>0,&&$4<15){print $0}}' file.txt |wc –l 显示行数

练习:

  1. grep和awk

    awk ‘{if($1>200801011){[print $0}}'file.txt

2、

处理命令回顾:

统计文本                wc

文本排序                sort

文本/目录对比            diff

在文件中查找关键行        grep / sed

在行文本中添、删、改    sed

在列文本中显示指定列    awk

在列文本中进行计算        awk

在列文本进行条件选择    awk

时间: 2024-11-05 06:26:49

linux Shell学习笔记第一天_其它的相关文章

linux Shell学习笔记第二天_其它

变量 获取本机主机名 #hostname 获取本系统版本号 #uname -r 获取cpu类型 获取cpu的工作频率 cat /proc/cpuinfo 获取内存使用情况 #free -m 获取硬盘使用情况 #df 变量类型及变量操作 本地变量(一般所指) 本地变量只存在用户当前shell中,当用户退出当前shell或开器一个新的shell,所设置的变量将会不存在 设置变量 #变量名=变量值 显示变量 #echo ${变量名} 假设a=1 显示则 echo ${a} 环境变量(用的非常少) 环境

linux Shell学习笔记最后一节,温故与知新_其它

脚本编写技巧 脚本文件名命名规则         文件名的字符包括         字母.数字."."."_"和"-", 注意:脚本的文件名命名不能以数字开头. 脚本文件名的命名,尽量使用英文单词.词组或短句的缩写. 脚本版本管理:         脚本作用.主版本号.修改次数.shell类型 变量命名规范         变量名可以由数字和字母组成         变量名采用全部英文字符小写的方式         变量名称尽量使用缩写,最好不要

linux Shell学习笔记第五天_其它

第五天:函数与任务调度 函数的优势 分而治之f 协同合作 方便管理 维护简单 函数的结构     function 函数名()     {         命令1         命令2         命令3     } 函数的参数传递     向函数传递参数就像在一般脚本中使用特殊变量$1,$2,$3-$9一样,函数取得所传参数后将原始参数传回shell脚本,因此最好先在函数内重新设置变量保存所传的参数.这样如果函数有一点错误,就可以通过已经本地化的变量名迅速加以跟踪. 函数文件     当

linux Shell学习笔记第四天_其它

本节课的脚本也同样共享在share中了. 第四天:循环结构 内容大纲:     应用实例分析     for循环     while循环 for循环的原理 达到效果     根据昨天的菜单修改. 选择1.2.3后还会提示是否继续选择的功能.选择4仍然是退出操作. for variable in list list 变量列表池 do     command1     command2 done 实例一 forlist.sh #!/bin/bash #for with list for loop i

linux Shell学习笔记第三天_其它

第三天:条件选择 大 纲     应用实例分析     条件测试     if-else-fi     case-in-esac 实现功能菜单: 执行脚本后 按1,显示当前时间 按2,显示CPU负载 按3,显示剩余内存 按0,退出脚本 按其他字符,提示超出选择范围后退出 分析步骤.     #date +%T     uptime awk截取     free –m 条件测试格式     #test –option obj     #[ -option obj ] 返回结果 表达式内容测试结果是

ActionBarSherlock学习笔记 第一篇——部署

ActionBarSherlock学习笔记 第一篇--部署         ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android版本上实现ActionBar的效果和功能.当在4.0+的版本使用时,会使用Android自身的ActionBar,当在4.0之前的版本使用时,则会使用ActionBarSherlock自身自定义的一套框架来实现ActionBar的功能.     要获得ActionBarSherlock,我们可以到Gi

linux中Bash shell学习笔记

BASH 的基本语法 •最简单的例子 -- Hello World www.111cn.net ! •关于输入.输出和错误输出 •BASH 中对变量的规定(与 C 语言的异同) •BASH 中的基本流程控制语法 •函数的使用 2.1     最简单的例子 -- Hello World! 几乎所有的讲解编程的书给读者的第一个例子都是 Hello World 程序,那么我们今天也就从这个例子出发,来逐步了解 BASH. 用 vi 编辑器编辑一个 hello 文件如下: #!/bin/bash # T

Linux Shell学习:如何调用Shell中的函数

说起函数调用,相信大家也不会陌生,然而对于初学Shell的我来说,Shell中函数调用方式却有点让我不太习惯,自己也走了不少的弯路,因为传递参数时出了一个很"自然"的错误,也让我吃了不少的苦头,所以总结一下Shell中函数的调用方法. 一.Shell中函数的定义 为了方便程序和管理和模块化并减少代码的重复,函数的确是一个好东西.而Shell中函数的定义有两种方法,如下: function fname() { statements: } 或 fname() { statements; }

shell学习笔记1---awk基础(原创)

awk概述 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和 动态正则表达式等先进功能,是linux/unix下的一个强大编程工具.它在命令行中使用,但更多是作为脚本来使用.awk的处理文本和数据的方式是这 样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作.如果没有指定处理动作,则把匹配的行显示到标准输出 (屏幕),如果没有指定模式,则所有被操作所指