用户切换
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,\}/\?$@@'
 
*********************************************
 
 
 
 
 

grep-sed命令用法:的更多相关文章

  1. sed命令用法详解

    sed命令用法 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space) ...

  2. <三剑客> 老二:sed命令用法

    sed命令的用法: sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ...

  3. SED命令用法整理

    sed '/Started/'q  匹配到Started字符串则退出sed命令 sed '/Started/{/in/q}'  同时匹配到Started和in两个字符时则退出sed命令 ------- ...

  4. Linux sed命令用法

    概述 sed命令是一个面向字符流的非交互式编辑器,不允许用户与它进行交互操作.sed是以行为单位处理文本内容的.在shell中,可以批量修改文本内容. 用法 sed [选项] [动作] 选项与参数:- ...

  5. sed命令用法

    Sed 简介 sed 是一种新型的,非交互式的编辑器.它能执行与编辑器 vi 和 ex 相同的编辑任务.sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令.指定文件名,然后在屏幕上查 ...

  6. sed 命令用法

    Sed:对文件进行编辑操作,对象是行.操作后在屏幕输出结果.如果要直接修改则加-i命令-f filename: 执行某文件内的sed命令-n 只显示被修改的那一行 如文件test内容:Letyou a ...

  7. 本人常用的sed命令用法

    如果使用sed命令修改文件,需要为sed命令指定[-i]选项(i,insert表示插入指令),下面是本人常用到的几种场景: 1. 在文件最后一行的下一行添加配置 如:在配置文件/etc/profile ...

  8. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  9. linux三剑客之sed命令

    一.前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令 ...

  10. sed命令使用

    创建模板文件 # cat >> example.txt <<"EOF" TeSt Test test EOF 测试过程中均不使用-i参数避免模板文件内容被修 ...

随机推荐

  1. hdu3949XOR(线性基)

    传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 题目大意:求一堆数字能异或出的第$k$大的数是多少 线性基求第k大好珂怕…… 据大佬们说就是把$k$给二进制拆分,如果$k$的第$i$位为1,那么$ ...

  2. 慕课笔记-Java入门第二季

    1.java对象的使用 (1)创建对象 类名 对象名=new 类名(); (2)使用对象 引用对象的属性:对象名.属性; 引用对象的方法:对象名.方法(); Note: ①Java会给成员变量赋初始值 ...

  3. Java | 基础归纳 | JPA

    https://www.javacodegeeks.com/2015/04/jpa%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B.html JPA 全称====>Jav ...

  4. [題解](單調隊列/水)luogu_P3088擠奶牛

    d長度內區間最大值,單調隊列維護即可 由於需要滿足左右同時有2倍高度的牛才能更新答案,所以正反跑兩次 #include<bits/stdc++.h> using namespace std ...

  5. 基于PHP的正则表达式

    用法 从某个字符抽取信息 用新文本替换匹配的文本 把字符串拆分成小块字符串组成的数组 基础 preg_match('/需要匹配的正则表达式/', '字符串'); 正则匹配模式 集合: [xxxx]-- ...

  6. bzoj2818: Gcd懵逼乌斯反演

    由于是单组数据,强行不分块O(n)过 线性筛部分非常神奇,用了一个奇妙的推导(懒得写了) #include <bits/stdc++.h> using namespace std; ],f ...

  7. 100 Same Tree 相同的树

    给定两个二叉树,写一个函数来检查它们是否相同.如果两棵树在结构上相同并且节点具有相同的值,则认为它们是相同的.示例 1:输入 :      1         1             / \    ...

  8. jdk1.8源码包下载并导入到开发环境下助推高质量代码(Eclipse、MyEclipse和Scala IDEA for Eclipse皆适用)(图文详解)

    不多说,直接上干货! jdk1.8 源码, Linux的同学可以用的上. 由于源码JDK是前版本的超集, 所以1.4, 1.5, 1.6, 1.7都可以用的上.     其实大家安装的jdk路径下,这 ...

  9. WGET and CURL

    目录 WGET and CURL 对比 wget curl curl使用示例 WGET and CURL 对比 CURL 和WGET都可以用来下载文件,用法也类似:curl/wget [-option ...

  10. Linux磁盘根目录满了问题解析

    linux里的log文件被删除后,空间没有被释放,是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用 ...