用户切换
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. nmon性能监控工具学习

    nmon在AIX环境上,是一款很出名的系统性能监控工具,其实它除了可以运行在AIX,还可以在Linux环境下编译.使用. 源码下载地址: http://nmon.sourceforge.net/pmw ...

  2. ADO学途 four day 数据库左右连接

    数据库的多表操作 数据库用于存放用户数据,用户数据库的数据又会有不同表来存放不同类型的数据,这这是就会产生多 张表来满足需求.列如,部门表有市场部,技术部,行政部等.,子表就有员工具体信息表用来存放员 ...

  3. web.xml中一个filter配置多个url-pattern

    需要在filter标签后添加多个filter-mapping标签,一个url-pattern就对应一个filter-mapping标签,不能直接把多个url-pattern配置到同一个filter-m ...

  4. javascript 中not defined 和undefined有什么区别

    概念上的解释:undefined是javascript语言中定义的五个原始类中的一个,换句话说,undefined并不是程序报错,而是程序允许的一个值.not defined是javascript在运 ...

  5. 2017浙江工业大学-校赛决赛 小M和天平

    Description 小M想知道某件物品的重量,但是摆在他面前的只有一个天平(没有游标)和一堆石子,石子可以放左边也可以放右边.他现在知道每个石子的重量.问能不能根据上述条件,能不能测出所问的重量. ...

  6. 115 Distinct Subsequences 不同子序列

    给定一个字符串 S 和一个字符串 T,求 S 的不同的子序列中 T 出现的个数.一个字符串的一个子序列是指:通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串.(譬如," ...

  7. RTT

    Segger RTT的使用 一般arm系统中,如何通过电脑键盘和显示器同mcu进行交互最有效的有两种形式:arm7的semihost,cm时代的traceswo.现在jlink推出了颇具特色的rtt( ...

  8. ubuntu触摸板关闭开启

    sudo rmmod psmouse          #用来禁用触摸板 sudo modprobe psmouse     #用来启用触摸板

  9. xml和TreeView

    1.TreeView代码代码: private void Form1_Load(object sender, EventArgs e) {<br> //代码为TreeView添加子项 tr ...

  10. Idea安装以及破解

    软件安装包和破解工具安装包 链接 链接:https://pan.baidu.com/s/1TpCiaSsAz_I9gXyOnwKK9g 密码:qc49 1.下载完Idea工具后,点击.exe文件,进行 ...