sed,awk,grep,trap,trap,cut,tr,curl,find
^ 行首定位符
^love 匹配所有以love开头的行
$ 行尾定位符
love$ 匹配所有以love结尾的行
. 单个任意字符
l..e 匹配以l开始后跟两个字符再跟一个e的字符串
* 重复0到多个星号前面的字符
a* 匹配0个或多个a的字符串
[]匹配一组字符的任意一个
[Ll]ove 匹配Love或love的字符串
[x-y]匹配指定范围的一个字符
[A-Z]ove 匹配大写字符开头后跟ove的字符串
[^]匹配不在指定组内的字符
[^A-Z] 匹配不是大写字母的任意字符
\ 转义字符用来转义元字符
love\. 匹配love后跟一个.的字符
! 取反
+ 表示一个或多个
xyz+ 一个或多个z
? 表式0个或一个
xyz? 0个或一个z
RE元字符
\< 词首定位符\<love 匹配love开头的词
|> 词尾定位符love\> 匹配love结尾的词
\<bin\> 匹配一个单词
\(..\) 给匹配的字符打上标签
(lov)able\1er/ 模式lov被保存为标签1用\1表示
查找一个字符串lov后跟上able,再跟上lov再接上er即:lovablelover
x{m}和x{m,}和x{m,n}字符x重复出现:m次,至少m次,至少m次,并不超过n次
o{5,10} 匹配包含5~10个o的字符串| 或者
echo "tom and jerry"|sed -r 's/(tom) and (jerry)/\2 and \1/'echo "tom g1,g2,g3 jerry"|cut -d" " -f2
echo "abc def"| sed -r 's/([a-z]+) ([a-z]+)/\2 \1/'
echo "abc def"| sed -r 's/([a-Z0-9]+) ([a-Z0-9]+)/\2 \1/'
echo "abcgood"|grep -E "abc(good)*" --color 匹配abc后有一个或多个good的行
echo "abchidhn"|sed -r 's/(.)(.*)/\1/' 用()切割字符
echo "abc" |grep -E "abc{3}" {}之前字符c出现的次数为3次
echo "abc defd xyz"|grep -E "\<[a-Z]{3}\>"匹配有三个字母的
echo "abc"| grep -E "abc+" --color
grep -E "^root|^tom" /etc/passwd
echo "abc user@sina.com.cn def"|grep -E "[a-Z0-9._]+@[a-Z0-9.]+\.[a-Z]{2,3}
" --color
ps:HOST=$(/bin/hostname)
将()里的命令执行后的结果赋值给HOST变量
grep awk sed 是基于正则表达式设计的
用双引号将正则表达式引起来
sed 循环 一行一行的处理文件
sed -n '/abc/p' file 默认会打印模式空间的内容
行中匹配abc的打印出来 -r 支持扩展分割符,-n不让他默认打印模式空间
sed '/abc/p' file1
读取file1的第一行到pattern space(临时缓冲区, 内存)
对pattern space中的这一行进行/abc/p操作
将pattern space中的这一行打印出来
清空pattern space
读取file1的下一行到pattern space
sed root@10.0.2.253 sed 's/abc/def' file 远程登录后修改file里的内容
sed -n '5p' file 把第五行打印出来
sed -n '$p' file 把最后一行打印出来
sed -n '1,3p' file 把一到三行打印出来
sed -n '1,~3p' file 从第一行开始打印三行
sed -n '1p; 3p' file 打印第一行和第三行
sed -n '1,/def/p' file 从第一行开始直到碰到def的行全部打印出来
sed -i '3i aaaaaaa' file 在第三行的前面加上aaaaaaa
sed -i '$a aaaaa' file 在最后行加入aaaaa
sed -i '/^tom/i aaaaaa' file 在以tom开头的行前一行加上aaaaaa
sed -i 's/abc/def/' file 改每一行的第一个abc成def
sed -i 's/abc/def/g' file 改每一行的所有abc成def
sed -i 's/abc/def/3' file 改每一行的第三个abc成def
sed -i '1,2s/abc/def/' file 改一到两行abc成def
sed -i '1,2s/^.*$/def/' file 改一到两行成def
sed -i '4c aaaaaaaaa' file 把第四行改为aaaaaaaa
sed -i '/^SELINUX/c selinux ' 把所有以SELINUX开头的行改为selinux
sed -i '/^abc/s/tom/jerry/' file 先找到以abc开头的行将这一行的tom改为jerry
sed -i '/abc/,/^def/s/123/456/' file 将abc开头的行和def开头的行之间的行的123改为456
s 换匹配的字段 c换匹配的行
sed -i '4d' 把第四行删除
sed -i '/^tom/d' file 删除以tom开头的所有行
sed -i '/^$/d' file 删除空行
sed -i '/^\s$/d' file 删除开头为空行 \s表示空格或tab
sed -i '/^mike/s/^/#' file 将mike行注释
sed '3s/abc/def/; 5s/abc/yyy/g' file1
sed 's/abc/def/; s/hij/xyz/' file1
sed -i -e '1s/jerry/tom/; -e 3s/mike/xyz/' file 多条一起执行用-e
sed '/ADDR/s/^/#/' file1 行首加#
sed '/ADDR/s/^#//' file1 去行首#
sed -ri /^#ServerName.*:80$/s/^#// /etc/selinux/config
找出/etc/seliunx/config文件中以#ServerName开头以:80结尾的行
并将#替换成空白
& 保存查找串以便在替换串中引用
sed 's/tom/&jerry/' file1
范围匹配
sed '/abc/,/xyz/s/tom/jerry/' file1 abc到xyz中的
sed '/tom/,/jerry/d' file1
sed -n '/abc/,/xyz/p' file1
sed '1,/tom/d' file1 第1行到第1个匹配tom的行
引用变量
var1="root"
sed "/$var1/c aixocm" file1
sed -ri "/IPADDR/s/[0-9.]+/$ip/" ifcfg-eth0
sed -i "s|^${i}1*|#&|" /etc/fstab
#------------------------------------------------------------------------
awk 按行处理行里字段 循环命令
默认以空格作为分割符 默认打印整行$0 -F分割符 制定分割符
awk 'BEGIN{print "aaaa"}/tom/{print $2}END{print "bbbbbbb"}' file1
先执行BEGIN里的语句 从文件中读取第一行是否匹配/tom如果有则执行没有就不执行
到读完后,再运行END的语句 可以选用BEGIN 匹配项 ENG。
awk '/^mike/{print $2}' file
awk 'NR==2{print $2}' file NR是行号 NF字段数
awk 'NR==2||NR==4{print $2}' file 只读两个固定的行号
awk '{print $0}' file $0 整个行
awk 'BENGIN{FS=":" OFS=" "}/bash$/{print $0}' file
FS 指定了分割符
OFS 指定了输出的字段分割符
tr ":" "" 将冒号改为空格
awk 'BEGIN{i=10;echo$i}'
awk -v v1=$a -v v2=$b 'BEGIN{print v1+v2}' 将bash的值传给awk
awk -F: -v v1=$a '$0~v1'{print $0} ~ 匹配条件
awk 'BEGIN{i=0;}{i++}END{print i}' file
awk '/^root/{$3+=10;print $3}' file
awk '$1~"root"{print $1}' file
awk '$1==500{print $1}' file 第一个字段为500
awk '$NF~"bash"{print $1}' file 最后一个字段是否有bash
awk '$3>=500&&$3<=503{print $2}' file
awk -F: -v v1=$a '$1~^v1' file 打印出以变量a开头的行
awk -F: '{if($1~/^root/)print $1}' file 打印出第一个字段以root开头的行的第一个字段
next 直接读下一行
continue
exit 结束不读了
break
int()整数化
awk 'system("useradd" $2)' file system()调用系统的命令
df -Th|grep "/$"|awk '{print $6}'|sed 's/%//'
df后截取某个字段并替换
tr 针对字符进行操作,单字符处理工具, 而不是字符串处理工具
cat file1 | tr "abc" "xyz"
a都替换成x, b都替换成y, c都替换成z,并不是将字符串abc替换成字符串xyz
echo "abc 11a22bc" |tr “abc” “xyz” 结果:xyz 11x22yz
tr "abc" "xyz" <file 处理文件
tr "a-z" "A-Z" <file 将小写字母转成大写字母
tr ":" "\m"
echo "abdcdd"| tr -d "abc"将abc三个字符删除
cat file |tr -d “a-z”
echo “aaaaaaaaxcxxx cccccccc”|tr -s"abc" 将重复的abc字符压缩成一个字符
sort 排序 文件没改变
默认以空白作为分割符以第一个字段进行排序 (按字符串排asic)
sort -n file 以第一个字段的数值排序
sort -r 倒序
sort -k2 以第二个字段排
sort -t:以:分割字段
sort -t: -k3nr /etc/passwd
注意:先sort再uniq
uniq 去重复行 不改变文件
uniq file 只改变相邻的重复行
uniq -c 显示相邻的重复多少行
uniq -u 只显示没有相邻重复的行
cut 分割字符 默认分割符为tab键
cut -d: -f1-f3 file 指定分割符为:只要1 3字段
cut -d: -f1,3,5
echo “addfgg” |cut -c3 取第三个字符
grep
grep -n ”root“ /etc/passwd 过滤出来加行数
grep -c ”root“ /etc/passwd 过滤出来的行号
grep -v ”root“ /etc/passwd 取反
grep -q ”root“ /etc/passwd 过滤出来的不显示
grep -w ”root“ /etc/passwd 过滤出来有单词root的行
grep -o ”root“ /etc/passwd 过滤出来root单词
grep -ro ”root“ 目录 过滤出来目录中文件里的有root的行
grep -i ”root“ /etc/passwd 忽略大小写
grep -E ”root“ /etc/passwd 启用扩展正则
grep -f file file1 过滤出file和file1中共同拥有的行
grep -f file file1 -v 过滤出file有file1没有的行
grep -x ”root“ file 过滤file中只含有root的的行
find
find . -nouser 把没有主人的文件找出来
find . +size +10000c 找出文件大于10000个字节的文件
find / -maxdepth 1 -name “*.conf” -maxdepth 不会找子文件
find . -perm 600 把权限为600的找出来
find . -name “*.sh” |xargs rm -rf {} 把文件找出后交给rm处理
find . -name “*.sh” |xargs -I{} rm -rf {} 用-I 指定用什么表示查出的内容4
trap 屏蔽信号
trap '' 2 屏蔽中断信号,不做什么
trap 'ls;pwd;date' 2 当出发中断信号(ctrl+c) 执行ls;pwd;date;
trap 2 还原
curl
curl -o a.html http://www.sohu.com/index.html 将搜狐的首页下载下载到a.html
curl -O http://www.sohu.com/index.html 将搜狐的首页下载下来
curl -T file ftp://10.0.2.253/ 将file文件上传到10.0.2.253中 用ftp协议
转载于:https://blog.51cto.com/menglinux/1437330
sed,awk,grep,trap,trap,cut,tr,curl,find相关推荐
- linux日志查看面试题,Linux 运维面试题 三剑客(sed awk grep)整理
一. 三剑客-基础部分题目 1. 选择 1.在给定文件中查找与条件相符字符串的命令及查找某个目录下相应文件的命令为:(多选)(AC)A:grep B:gzip C:find D:sort 2.在给定文 ...
- sed,awk,grep学习笔记
1.显示/etc/passwd 文件中以bash结尾的行. cat /etc/passwd | grepbash$ 2.显示/etc/passwd文件中的两们或三位数(例如:99,100) grep ...
- linux三剑客awk、sed、grep与cut的总结
在Linux中,一切皆文件,对Linux的操作就是对文件的处理.对文件操作处理最重要的三个命令是grep.sed.awk,它们在业界被称为"三剑客". 三剑客的功能非常强大,但它们 ...
- Linux进阶 vim grep sed awk 正则表达式
01 Linux上的文本编辑器vim vim 编辑器是什么 vim 编辑器的三种模式 注意大小写!!! 打开文件时文件可以存在或者不存在,不存在时当关闭的时候系统会创建 命令模式 • 用vim FIL ...
- Shell ❀ 三剑客 - Grep + Sed + Awk
文章目录 八.三剑客 - Grep + Sed + Awk 1.Grep - 过滤 1.1 常用grep参数 1.2 使用方法 2.Sed - 行匹配 2.1 执行原理 2.2 常见语法 2.3 使用 ...
- Shell工具 cut sed awk sort
Shell工具(重点) cut cut的工作就是"剪",具体的说就是在文件中负责剪切数据用的.cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段输出. 1.基本 ...
- Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)
shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...
- linux grep sed awk
linux 文本编辑命令grep sed awk(转) grep grep (global search regular expression(RE) and print out the li ...
- linux 文本编辑命令grep sed awk
grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...
最新文章
- 成功解决打包时不能import自定义的包或库出现运行exe时No module named 缺少包
- MonkeyServer的使用及自动化
- jquery 视觉特效(幻灯片效果)
- ThinkPHP3(添加,修改,删除)
- 整理Java基础知识--NumberMath类
- jsp怎么调用servlet_Servlet简述
- 在 ML2 中配置 OVS vlan network - 每天5分钟玩转 OpenStack(136)
- servlet 从oracle中结果集,用servlet对oracle进行增删改查
- [4G5G专题-45]:物理层-基带子载波数字调制解调(星座图, 相位调制PSK, 正交幅度相位调制QAM)
- 计算机桌面设置上时间表,如何在电脑桌面便签上设置日程安排表?
- 大数据可视化平台Demo
- WIN2K XP 2K3 下红警不能联机的完美解决方案(转)
- 动词变名词的变化规则_动词accept变成名词-tion?那就错……多名词变化规律如下总结...
- Unity随机创造敌人
- QQ抢车位游戏PhysicalDataModel
- Markdown目录生成
- 一些好用的手机软件分享
- 高尔顿数据集和Anscombe四重奏数据集
- 微信怎么转移聊天记录到另一台新手机,3个免费方法!
- 测量误差(error)的概念
热门文章
- 通过修改explorer.exe内存隐藏文件及注册表项
- python 如何判断excel单元格为空_如何用python处理excel(二)
- python网站设计开题报告_网站设计开题报告范文精选5篇
- android提示程序正在执行,Android中获取正在运行的进程(一)
- css3中animation动画、浏览器私有前缀、文字阴影
- ElasticSearch获取多个文档Multi GET API介绍
- 2021年中国数字化采购研究报告
- 传统品牌vs新消费品牌社交营销差异化分析报告
- 如何理解产品经理的核心竞争力
- 作者:张峰(1978-),男,博士,国家海洋信息中心副研究员