用户切换
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参数避免模板文件内容被修 ...
随机推荐
- Optimized fragmentation improves the identification of peptides cross-linked by MS-cleavable reagents (文献分享一组-张宇星)
题目:Optimized fragmentation improves the identification of peptides cross-linked by MS-cleavable reag ...
- echarts相关属性设置(1)折线图篇
option = { tooltip: { trigger: 'axis', // axisPointer: { // type: 'cross', // label: { // background ...
- win10无法写入删改c盘文件的解决方法
前言 最近使用了win10系统,结果发现无法对c盘的文件进行写入删改,在网上到处搜集资料,终于找到了解决方法,这里总结一下. 首先,本文针对的是win10家庭版,家庭版默认是不提供组策略功能,而我们需 ...
- nginx 设置websocket支持
#websocket======相关 proxy_read_timeout 60m; proxy_http_version 1.1; proxy_set_header Upgrade $http_up ...
- [題解](最短路)luogu_P1119災後重建
一道好題,然而看題解做的...... floyed的實質:只經過前k個點i到j的最短路,原狀態轉移方程為 f [ k ] [ i ] [ j ]=min( f[ k-1 ] [ i ] [ j ],f ...
- 存储-InfluxDB
1 TSDB influxDB是一个time series时间序列数据库. 在监控系统的开发中,大体分为采集-存储-可视化三个大类.监控指标有很显著的时间特征数据,一般采用TSDB存储. 在TSDB中 ...
- AU3中BitAnd与Win32汇编中的&按位进行与操作的本质思考
心越静,思考的越透彻.不要着急,宇宙有求必应!我可能是最笨的才会写出来进行思考,写出来至少自己在碰到这些本质上的问题不会再度卡壳.本着"没有交流的思考不是完整的思考"的原则,我将这 ...
- POJ1129(贪心)
笔者休息娱乐.贪心即可,爱怎么暴力怎么暴力.莽WA,改了几下算法发现是输出中二了-- int T, color[26], tot; bool adj[26][26]; string s; void g ...
- flask 学习app代码备份
#!/usr/bin/python # -*- coding: UTF-8 -*- from flask import Flask, url_for from flask import request ...
- 利用apache限制IP并发数和下载流量控制
一,为什么要对IP并发数,下载流量进行控制 说正题之前,先给大家讲个故事,那是在2007年,我进了一家公司,当时我们正在给达芙妮做电子商务网,www.idaphne.com.从三月份开始做的吧,九月份 ...