用户切换
su username:非登录式切换
su - username:登录式切换
su -l username:登录式切换
su username -c COMMAND
echo -n
-e \n
\t
‘\033[31-7mXXXXXXXXXX\033[0m’
‘\033[41-7mXXXXXXXXXX\033[0m’
‘\033[31;42mXXXXXXXXX\033[0m’
‘\033[1-7mXXXXXXXXXXX\033[0m’
3X为前景色;4X为背景色
'\033[20Ghello'空20个字符再显示。
\033代码也可用\e代替:echo -e "\e[31;5mhello,world\e[0m"闪烁效果
date +%s 从1970/1/1 零时零分到现在共经历了多少秒。
date +%F
date +%T
+%D
******************************
***********************************
文本处理工具之grep、egrep和fgrep:
grep: (global search regular expression(RE) and print out the line
文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行
格式:grep [options] 'PATTERN' file,...
--color=auto
正则表达式:
1)基本正则表达式BRE
2)扩展正则表达式ERE
正则表达式模式都区分大小写,空格也是字符
正则表达式识别的特殊字符包括
.*[]^${}\+?|()
如果^放在模式中的其他位置而不是开头,^就是普通字符
正则表达式:是一类字符所书写出的模式(pattern)
元字符:不表示字符本身的意义,用于额外功能性的描述
基本正则表达式和扩展正则表达式
基本正则表式的元字符:
字符匹配:
.: 任意单个字符
[]: 指定范围内的任意单个字符
[0-9], [[:digit:]]
[a-z], [[:lower:]]
[A-Z], [[:upper:]]
[[:alpha:]]所有大小写字母
[[:alnum:]]包含数字和字母表
[[:space:]]匹配空白字符
[[:punct:]]标点符号
[^]:指定范围外的任意单个字符
次数匹配:用来指定匹配其前面的字符的次数
*: 任意次
例子:x*y, xxy, xy, y,
.*: 匹配任意长度的任意字符
\?: 0次或1次
x\?y, xy, y, xxy
贪婪模式:尽可能的长的去匹配字符;
\{m\}: 匹配m次
\{m,n\}:
\{m,\}: 至少m次;
\{0,n\}:至多n次;
位置锚定:用于指定字符出现的位置
^: 锚定行首
^Char
$: 锚定行尾
char$
^$: 空白行
\<char: 锚定词首,\bchar
char\>: 锚定词尾,char\b
分组:
\(\)
\(ab\)*xy
引用:
\1: 后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式所匹配到的内容
\2
...
\(a.b\)xy\1: a6bxya6b,
He like his lover.
She love her liker.
He love his lover.
She like her liker.
grep 常用选项:
-v: 反向,显示不能被模式所匹配到的行;
-o: 仅显示被模式匹配到的字串,而非整行;
-i: 不区分字符大小写, ignore-case
-E: 支持扩展的正则表达式
-A #:显示匹配行及下面的#行
-B #
-C # 显示匹配行及上下各#行
-c:统计匹配行数
-w:指定要搜索的单词
-n: 在输出的每行前加上它所在的文件中它的行号
-e:指定多个匹配模式
练习:
1、显示/proc/meminfo文件中以大小写s开头的行;
# grep "^[sS]" /proc/meminfo
# grep -i "^s" /proc/meminfo
2、取出默认shell为非bash的用户;
# grep -v "bash$" /etc/passwd | cut -d: -f1
3、取出默认shell为bash的且其ID号最大的用户;
# grep "bash$" /etc/passwd | sort -n -t: -k3 | tail -1 | cut -d: -f1
4、显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;
# grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit
5、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;
# grep "^[[:space:]]\{1,\}[^[:space:]]\{1,\}" /boot/grub/grub.conf
6、找出/etc/passwd文件中一位数或两位数;
# grep --color=auto "\<[0-9]\{1,2\}\>" /etc/passwd
7、找出ifconfig命令结果中的1到255之间的整数;
# ifconfig | grep -E --color=auto "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"
8、查看当前系统上root用户的所有信息;
# grep "^root\>" /etc/passwd
9、添加用户bash和testbash、basher,而后找出当前系统上其用户名和默认shell相同的用户;
# grep --color=auto "^\([[:alnum:]]\{1,\}\)\>.*\1$" /etc/passwd
10、找出netstat -tan命令执行的结果中以“LISTEN”或“ESTABLISHED”结尾的行;
11、取出当前系统上所有用户的shell,要求:每种shell只显示一次,且按升序显示;
# cut -d: -f7 /etc/passwd | sort -u
挑战题:写一个模式,能匹配真正意义上的IP地址;(1.0.0.1--223.255.255.254)
grep, egrep, fgrep
egrep: 使用扩展正则表达来构建模式,相当于grep -E
元字符:
字符匹配:
.: 任意单个字符
[]: 指定范围内的任意单个字符
[^]: 指定范围外的任意单个字符
次数匹配:
*:匹配其前面的字符任意次;
?: 匹配其前面的字符0或1次;
+: 匹配其前面的字符至少1次
{m}: 匹配其前面的字符m次;
{m,n}: 至少m次,至多n次
{m,}: 至少m次;
{0,n}:至多n次;
锚定:
^: 行首
$: 行尾
\<, \b: 词首
\>, \b:词尾
分组:
(): 分组
|: 或者, ac|bc
grep -E "con(C|c)at"
conCat或concat
练习:写一个脚本,分别统计/etc/rc.d/rc.sysinit、/etc/init.d/functions和/etc/fstab文件中各自以#开头的行的行数,以及空白行的行数;
练习:写一个脚本,分别复制/etc/rc.d/rc.sysinit、/etc/init.d/functions和/etc/fstab文件至/tmp目录中,文件名为原名后跟上当前的日期组成;
例如第一个文件复制后的名称为/tmp/rc.sysinit-2-14-02-16;
练习:写一个脚本
显示当前系统上所有默认shell为bash的用户的用户名、UID以及其在/etc/passwd文件中的行号;
egrep:
\(\)-->()
\{\}-->{}
?
+
|: C|cat匹配C或cat
(C|c)at匹配Cat或cat
^$空行
grep:
\<\>精确匹配
[[:space:]]空白字符
[^[:space:]]非空白字符
find -a
-o
-not !
\<锁定词首
\>锁定词尾
\<\>
[[:punct:]]标点符号
\{m,n\}
\{m,\}
\{0,m\}
\{m\}
****
sed:
sed [option] 'script' input_file
sed -f file input_file
#cat 3
s/root/ruut/gp
#sed -n -f 3 /etc/passwd
sed编辑器基础
1 更多的替换选项
sed '[address]s/pattern/replacement/flags' data5
有四种可用的替换标记:数字
g 全局替换
i 不区分字符大小写
p
w 保存文件(只有匹配模式的行才保存到文件)
-n:禁止默认输出,常与p配合使用
-r:支持扩展的正则表达式
-e 'script' -e 'script': 指定多个编辑指令
#sed -n -e '/root/p' -e '/name/p' /etc/passwd
#sed -n -e '/root/p;/name/p' /etc/passwd
#sed -n '{/root/p;/name/p}' /etc/passwd
#sed -n '2,8{/root/p;/name/p}' /etc/passwd
-i: 直接编辑原文件
address定界符,有两种形式的行寻址:
1)行的数字范围 2s/; 2,4s/; 2,$s/
2)用文本模式来过滤出某行(正则表达式)
sed -n '/^bin/,/mail/p' /etc/passwd
组合命令
sed '2,4{s/fox/elephant/;s/dog/cat/}' data1
2 删除行d
2d; 2,4d; /fseeio/d; /abc/,/def/d;
3 插入和附加文本
插入:sed '[address]i\文本' data1 匹配行的前一行插入
附加:sed '[address]a\文本' data1 匹配行的后一行附加
插入多行:sed '[address]i\文本1\n文本2' data1
(\n表示换行,附加多行同上)
4 修改行c
sed '[address]c\文本' data1
5 字符转换命令y
sed '[address]y/inchars/outchars/'
inchars和outchars值一对一映射,长度必须相等
6 打印p
1)小写p打印文本行,与-n配合使用
2)等号=命令用来打印行号
sed -n '1,3=;p' /etc/passwd
3)l命令用来列出行,打印出文本和ASCII字符,如\t
7 向文件写入 w
[address]w filename
sed -n '/^root/w root.txt' /etc/passwd
sed -n '1,3w root.txt' /etc/passwd
8 从文件读取数据r
[address]r filename
只能指定单独一个行号或文本模式地址,sed将读入的数据插入到地址后
9 n 移到模式匹配行的下一行再进行处理
N 合并模式匹配行及下一行;和d一起使用时,会在模式空间中删除2行,而D会删除第一行
10 !取反
sed -n '/root/!p' /etc/passwd
11 &
练习:
1、替换/etc/inittab文件中“id:3:initdefault:”一行中的数字为5;
# sed 's@\(id:\)[0-9]\(:initdefault\)@\15\2' /etc/inittab
2、删除/etc/init.d/funcions文件中的空白行;
# sed '/^$/d' /etc/ini.t/functions
3、删除/etc/inittab文件中位于行首的#;
# sed 's@^#@@g' /etc/initta
4、删除/etc/rc.d/rc.sysinit文件中以#后跟至少一个空白字符开头的行的行首的#和空白字符;
# sed 's@^#[[:space:]]\{1,\}@@g' /etc/rc.d/rc.sysinit
5、删除/boot/grub/grub.conf文件中行首的空白字符;
# sed 's@^[[:space:]]\{1,\}@@' /boot/grub/grub.conf
6、取出一个文件路径的目录名称,如/etc/sysconfig/network,其目录为/etc/sysconfig,功能类似dirname命令;
# echo /etc/sysconfig/network-scripts/ifcfg-eth0/ | sed 's@[^/]\{1,\}/\?$@@'
*********************************************
- sed命令用法详解
sed命令用法 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space) ...
- <三剑客> 老二:sed命令用法
sed命令的用法: sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ...
- SED命令用法整理
sed '/Started/'q 匹配到Started字符串则退出sed命令 sed '/Started/{/in/q}' 同时匹配到Started和in两个字符时则退出sed命令 ------- ...
- Linux sed命令用法
概述 sed命令是一个面向字符流的非交互式编辑器,不允许用户与它进行交互操作.sed是以行为单位处理文本内容的.在shell中,可以批量修改文本内容. 用法 sed [选项] [动作] 选项与参数:- ...
- sed命令用法
Sed 简介 sed 是一种新型的,非交互式的编辑器.它能执行与编辑器 vi 和 ex 相同的编辑任务.sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令.指定文件名,然后在屏幕上查 ...
- sed 命令用法
Sed:对文件进行编辑操作,对象是行.操作后在屏幕输出结果.如果要直接修改则加-i命令-f filename: 执行某文件内的sed命令-n 只显示被修改的那一行 如文件test内容:Letyou a ...
- 本人常用的sed命令用法
如果使用sed命令修改文件,需要为sed命令指定[-i]选项(i,insert表示插入指令),下面是本人常用到的几种场景: 1. 在文件最后一行的下一行添加配置 如:在配置文件/etc/profile ...
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
- linux三剑客之sed命令
一.前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令 ...
- sed命令使用
创建模板文件 # cat >> example.txt <<"EOF" TeSt Test test EOF 测试过程中均不使用-i参数避免模板文件内容被修 ...
随机推荐
- Linux下安装ruby
使用apt-get安装 sudo apt-get install ruby 这个命令下载的,有可能是旧的版本,所以还是推荐下面的方式. 下载tar.gz安装 去官方网站下载最新的tar.gz文件 su ...
- [Xcode 实际操作]九、实用进阶-(20)创建位移关键帧动画:通过添加运动关键点制作位移动画
目录:[Swift]Xcode实际操作 本文将演示如何通过添加运动关键点的方式,来制作位移动画 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIK ...
- 跳转到另一个APP
看看这个代码: http://code4app.com/codesample/4fcc512d6803fae60b000002 inApp跳转,不过需要Nimbus类库. 要跳转到另一个APP,需要另 ...
- extern使用方法总结!(转)
extern 在源文件A里定义的函数,在其它源文件里是看不见的(即不能访问).为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明: extern 函数原型: 这样,在源文件B里也可以调 ...
- [软件工程基础]2017.11.02 第六次 Scrum 会议
具体事项 燃尽图 每人工作内容 成员 已完成的工作 计划完成的工作 工作中遇到的困难 游心 #10 搭建可用的开发测试环境:#9 阅读分析 PhyLab 后端代码与文档:#8 掌握 Laravel 框 ...
- 由Reference展开的学习
在阅读Thinking in Java的Containers in depth一章中的Holding references时,提到了一个工具包java.lang.ref,说这是个为Java垃圾回收提供 ...
- Brackets前端开发编辑器
http://www.cnblogs.com/xiazdong/p/3550148.html http://blog.csdn.net/shinesun001/article/details/5348 ...
- .NET Core 1.0 CentOS7 尝试(三、使用VSCode创建一个Web应用)
参考地址:https://docs.asp.net/en/latest/tutorials/your-first-mac-aspnet.html 一.使用VSCode创建一个目录FirstWebApp ...
- [BZOJ1047][HAOI2007]理想的正方形 二维单调队列
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1047 我们对每矩阵的一列维护一个大小为$n$的单调队列,队中元素为矩阵中元素.然后扫描每一 ...
- arcgis jsapi接口入门系列(5):几何(点线面)基本操作
点 point: function () { //通过wkt生成点 //wkt,代表点的坐标 let wkt = "POINT(113.566806 22.22445)"; //w ...