unix shell编程摘记系列(二)

一、正则表达式

句点.    //匹配任意单个字符,如a..表示匹配a后两个字符

^        //匹配行首,如^w,表示匹配位于行首的w

$        //匹配行尾,如x$表示匹配x位于行尾的行,^insert$表示只包含insert的行

\        //加在特殊字符前去除特殊字符的特殊意义

^$        //匹配空白行

*        //匹配0或若干个字符,x*表示匹配0次或若干个连续的x,xx*表示匹配1个或多个连续的x,.*表示0或若干个字符,w.*s表示w开头s结尾的任意字符串

上述字符仅用于搜索串时才有特殊意义,例如/^[A-Z]/,表示匹配以大写字母开头的行;

[^A-Z]    //匹配除大写字母之外的字符

{min,max\}    //指定范围的匹配,前面的正则表达式至少重复min次,至多max次

\(...\)       //保存匹配的字符串,将小括号中匹配的字符串存储到下一个寄存器中(1-9)

[tT]    //匹配小写或大写t

[a-z]    //匹配任意小写字母

[a-zA-Z]    //匹配小写或大写字母

[^字符表]    //匹配任一不在字符表中的字符

cut

cut -c1- a    //把a文件中每一行从第一个字符到最后最后一次字符的结果析取出来

cut -c1-5 a    //把a文件中每一行从第一个字符到第5个字符的结果析取出来

cut -d: -f1 /etc/shadow    //把shadow文件中每一行以:分割的第一段的结果析取出来,即是用户名

cut -d: -f1,6 /etc/passwd    //把passwd文件中的每一行以:分割的第一段和第六段的结果析取出来,即是用户名和用户宿主目录

cut -f1 a    //这里不加-d参数表示cut默认用的制表符作为分隔符

\t    //表示制表符

paste    //合并行

paste -d ‘+‘ a b   //将a和b文件中的每一行都合并显示,以+号分割,不加-d参数默认以制表符分割

paste -s a    //将a文件中的所有行合并为一行

sed    //流编辑器,编辑数据用

sed command file

sed ‘s/unix/UNIX/g‘ intro    //将intro文件中的unix全部替换为UNIX并在屏幕上打印出来,不改变原文件(s是替换作用,g是全局选项,保证一行中有多个unix都能被替换)

sed -n ‘1,2p‘ /etc/passwd    //只显示passwd文件的前两行

sed -n ‘/root/p‘ /etc/passwd    //只显示passwd文件中包含root字符串的行

sed -n ‘1,2d‘ /etc/passwd    //删除passwd文件中1和2行

sed ‘5d’ a    //删除a文件的第5行

sed ‘/[Tt]est/d‘ a //删除a文件中包含Test或test的行

sed ‘s/...//‘ a //删除a文件中每一行的前3个字符

sed ‘s/...$//‘ a //删除a文件中每一行的后3个字符

tr    //用于转换来自标准输入的字符,不改变原文件

tr from-chars to-chars

tr e x < /etc/passwd

tr ‘[a-z]‘ ‘[A-Z]‘ < /etc/passwd    //将passwd文件中小写字母转为大写字母

常用ASCII字符的八进制值

响铃 7

退格 10

制表符 11

新行 12

换行 12

换页 14

回车 15

转义 33

tr -s ‘ ‘ ‘ ‘ a    //压缩掉a文件中多余的空格

tr -d ‘ ’ a    //删除掉a中的空格

tr ‘X‘ ‘x‘    //所有大写转为小写

tr ‘()‘ ‘{}‘    //所有左小括号转为左大括号,右小括号转为右大括号

tr ‘[A-Z]‘ ‘[N-ZA-M]‘ //所有A-M的字符分别转换为N-Z,N-Z的字符分别转为A-M

tr -d ‘[0-9]‘    //删除所有数字

grep

grep pattern files
grep -i     //不区分大小写

grep -v    //反选,不显示包括模式的行

grep -l    //显示包含模式的文件名

grep -n    //文件中符合指定模式的行显示行号

sort    //排序,默认按编码方式升序排列

sort -u    //去除重复的行

sort -r    //反序排序

sort -o    //后面跟文件名,输出定向到文件

sort -t: -k 3 /etc/passwd    //按用户ID来排序

uniq    //去除连续的重复行

uniq input-files out-files

uniq -d    //显示重复的行

sort /etc/passwd |cut -f1 -d: |uniq -d    //查找重复的用户名

awk,perl

who|cut -f1 -d‘ ‘  |grep ‘\w\{4,\}‘    //查找系统中至少4个字符的已登录用户

cut -d: -f 1,3 /etc/passwd | grep ‘[0-9]\{3,\}‘ | cut -d: -f 1    //查出系统中用户标识号大于99的用户

cut -d: -f 1,3 /etc/passwd |grep ‘[0-9]\{3,\}‘ | wc -l    //统计大于99的用户数

ls -l | sort -nrk 5    //按文件大小降序列出目录下的所有文件

时间: 2024-10-10 03:06:02

unix shell编程摘记系列(二)的相关文章

unix shell编程摘记系列(一)

一.基本命令回顾 date    //显示日期和时间 who    //查看登录系统的所有用户 echo    //显示输入的内容 文件操作类 ls    //列出文件清单 cat    //显示文件内容 wc    //统计文件中的单词数 cp    //复制文件 mv    //文件重命名 rm    //删除文件 目录操作类 pwd    //显示当前工作目录 cd    //改变当前工作目录 mkdir    //创建目录 ln    //链接文件 ln -s  源文件  目标文件   

Linux Unix shell 编程指南学习笔记(第一部分)

第一章:文件安全与权限: 1.文件和目录的权限 创建文件时系统保存了文件所有相关的信息,包括 文件的位置 . 文件类型 . 文件长度 . 哪位用户拥有该文件,哪些用户可以访问该文件 . i 节点 . 文件的修改时间 . 文件的权限位 . 文件类型: d: 目录 l : 符号链接(指向另一个文件) s: 套接字文件 b: 块设备文件 c: 字符设备文件 p: 命名管道文件 -: 不属于上述类型的文件 文件权限 XXX       XXX        XXX 最左边 XXX : 文件属主 权限位

shell编程(十二)--- 添加用户示例

[[email protected] Learn]# cat useradd-final.sh  #!/bin/bash # DEBUG=0 ADD=0 DEL=0 help() { echo "Usage: $(basename $0) -v | --verbose | --add user1,user2,... | --del user1,user2,... | -h | --help" } while [ $# -ne 0 ] do case $1 in -h | --help 

Linux与Unix shell编程指南(完整高清版).pdf

找到一本很详细的Linux Shell脚本教程,其实里面不光讲了Shell脚本编程,还介绍了系统的各种命令 http://vdisk.weibo.com/s/yVBlEojGMQMpv 本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题.本书内容全面.文字简洁流畅,适合Shell编程人员学习.参考. 目      录 译者序 前言 第一部分   shell 第1章   文件安全与权限 1 1.1   文件 1 1.2   文件

Linux/Unix shell 自动发送AWR report(二)

观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告.不过awrrpt.sql脚本执行时需要我们提供一些交互信息,因此可以将其整合到shell脚本中来实现自动产生指定时段的awr报告并发送给相关人员.本文对Linux/Unix shell 自动发送AWR report的功能进行了完善和补充. 1.shell脚本 [python] view plain copy print? [email protected

UNIX SHELL基础知识总结(二)

1. vim,vi及ex的关系 vim不需要安装,vi为ex的"Visual Mode",Vim是vi的高级版本: 2. Unix Shell 快捷键 Ctrl+a/e将光标定位到 命令的头/尾 Ctrl+u/k剪切光标前/后的内容       Ctrl+y 粘贴Ctrl+u/k的内容 3. Unix Shell中的时间提取 dt="`date +%F`"         //2017-09-27 yy="`date +%Y`"        /

Linux Unix shell 编程指南学习笔记(第四部分)

第十六章  shell脚本介绍 此章节内容较为简单,跳过. 第十七章   条件测试 test命令 expr命令 test  格式  test  condition     或者  [ condition ]  (注意: condition两侧有空格) 文件状态测试: - d 目录 : - s 文件长度大于0.非空 : - f 正规文件 - w 可写 : - L 符号连接 : - u 文件有s u i d位设置 - r 可读 : - x 可执行 测试的逻辑操作符: -a   :逻辑与,操作符两边均

shell基础学习系列二:变量

Shell支持自定义变量. 定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关键字(可用help命令查看保留关键字). 变量定义举例: myUrl="http://see.xidian.edu.cn/cp

Linux Unix shell 编程指南学习笔记(第五部分)

第二十五章 深入讨论 << 当shell 看到 << 的时候,它知道下一个词是一个分界符,该分界符后面的内容都被当做输入,直到shell又看到该分界符(位于单独的一行).比如: cat >> tmpfile <<DOC > this is the first line > this is the second line > third > forth >..... >DOC 其中DOC就是分界符,再次在新的行中输入DOC时