8月18日上课笔记

  
换行符号\r\n
水平制表,跳格(移至下一列)\t
垂直制表\v
  
上一条指令!!
命令历史第n条!n
最近一次以字符串为开头的命令!字符串
执行上一个变量!$
执行多行命令分隔符;
用户的家目录
命令后台运行末尾+ & 
通配多个字符*
通配1个字符
输出重定向>
输入重定向<
追加重定向>>
错误重定向2>
管道符|
中间字符中的任意一个[ ]
命令顺序执行,1成功才执行2&&
命令管道,1成功不执行2,1不成功执行2||
  
  
  
命名alias panyu='pwd'
解除命名unalias panyu
  
暂停进程Ctrl+z
恢复进程/调到前台fg
后台运行bg
终止进程Ctrl+c
查看暂停或后台进程jobs
命令后台运行 & 符号
显示信息pidps aux
  
显示变量值echo $PATH
显示系统变量env
显示环境变量(用户)set
定义变量例子panyu=Amingst
取消变量unset panyu
定义系统变量“/etc/profile” 文件最末行加入 export myname=Aming 然后运行 source /etc/profile
定义环境变量(用户)用户主目录下的 .bashrc 文件最后一行加入 export myname=Aming 然后运行 source .bashrc
  
注意事项 
1. 设定变量的格式为 “a=b”, 其中a为变量名,b为变量的内容,等号两边不能有空格; 
2. 变量名只能由英、数字以及下划线组成,而且不能以数字开头; 
3. 当变量内容带有特殊字符(如空格)时,需要加上单引号;变量内容中本身带有单引号,这就需要用到双引号 
4. 如果变量内容中需要用到其他命令运行结果则可以使用反引号 
5. 变量内容可以累加其他变量的内容,需要加双引号; 
  
进入子shellbash
查看shell的treepstree |grep bash
变量输出(子shell有用)export abc
所有变量输出,声明所有变量export
  
显示行数 linewc -l 
显示字数 wordwc -w
显示Bytes数 charswc -c
  
  
  
cut分隔符分隔截取
-ddivide:分隔符
-f fundamental基础后面接的是第几个区块,默认行
-c char 后面接的是第几个字符
  
cat /etc/passwd |cut -d ':' -f 1 |head -n5输出第一行以:为分隔符的5个块
head -n2 /etc/passwd|cut -c2输出前两行每行第二个字母
head -n2 /etc/passwd|cut -c1-10输出前两行每行的10个字母
 head -n2 /etc/passwd|cut -c5-10输出前两行每行的第5到第10个字母
head -n2 /etc/passwd|cut -c1,3,10输出前两行每行的第1、3、5的字母
  
sort 
 -ttab分隔符 :作用跟cut的-d一个意思
 -n number:使用纯数字排序
 -r 反向排序
 -u 去重复
 -kn1,n2 由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序
  
head -n5 /etc/passwd |sortascii顺序排列
head -n5 /etc/passwd |sort -t: -k3 -n以:分隔的第三段以纯数字排序
head -n5 /etc/passwd |sort -t: -k3,5 -r表示从第3到第5区域间的字符串反向排序
  
uniq 
 -ccount统计重复的行数
sort testb.txt |uniq 
sort testb.txt |uniq -c 
  
tee重定向 “>” +显示在屏幕
echo "aaaa" |tee testb.txt 
  
trtranslate替换
 -d delete删除某个字符,-d 后面跟要删除的字符
 -s把重复的字符去掉
  
head -n2 /etc/passwd |tr '[a-z]' '[A-Z]'替换为大写
grep 'root' /etc/passwd |tr 'r' 'R'r替换为R
  
 split切割文档
 -b依据大小切割 byte
 -l依据行数切割
  
split -b500 passwd500byte大小分割
split  -b500 passwd  123123开头命名500byte分割
split -l10 passwd10行一个文件
  
grep  [-cinvABC]  'word'  filename 
 -c count打印符合要求的行数 
 -i :忽略大小写 
 -n number在输出符合要求的行的同时连同行号一起输出 
 -v :打印不符合要求的行 
 -A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行 
 -B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行 
 -C :后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行 
  
grep -A2 'halt' /etc/passwd把包含 ‘halt’ 的行以及这行下面的两行都打印出
grep -B2 'halt' /etc/passwd把包含 ‘halt’ 的行以及这行上面的两行都打印出
grep -C2 'halt' /etc/passwd把包含 ‘halt’ 的行以及这行上面和下面的各两行都打印出
grep -n 'root' /etc/passwd过滤出带有某个关键词的行并输出行号
grep -nv 'nologin' /etc/passwd过滤不带有某个关键词的行,并输出行号
grep '[0-9]' /etc/inittab过滤出所有包含数字的行
grep -v '[0-9]' /etc/inittab过滤出所有不包含数字的行
grep -v '^#' /etc/inittab把所有以 ‘#’ 开头的行去除
grep -v '^#' /etc/crontab |grep -v '^$'去除所有空行和以 ‘#’ 开头的行
 “^” 表示行的开始, “$” 表示行的结尾,那么空行则可以用 “^$” 表示 
grep '^[^a-zA-Z]' test.txt过滤除a-Z开头
grep '[^a-zA-Z]' test.txt过滤含有除a-Z
grep 'r..o' /etc/passwd.为任意一个字符
grep 'ooo*' /etc/passwd包含0个或一个o,即‘ooo*’ 表示oo, ooo, oooo ... 或者更多的 ‘o’
grep '.*' /etc/passwd |wc -l‘.*’ 表示零个或多个任意字符,空行也包含在内
grep 'o\{2\}' /etc/passwd包含有两个o  的行
egrep 'o+' test.txt筛选一个或一个以上前面的字符
egrep 'oo+' test.txt筛选一个或一个以上前面的字符
egrep 'ooo+' test.txt筛选2个或2个以上前面的字符
egrep 'o?' test.txt筛选零个或一个前面的字符
egrep 'ooo?' test.txt筛选2个或2个以上前面的字符
egrep 'oooo?' test.txt筛选3个或4个以上前面的字符
egrep 'aaa|111|ooo' test.txt筛选字符串1或者字符串2或字符串3
egrep 'r(oo|at)o' test.txt筛选rooo或roat
  
sed 
-e<script>或--expression=<script>:以选项中的指定的script来处理输入的文本文件; 
-f<script文件>或--file=<script文件>:以选项中指定的script文件来处理输入的文本文件; 
-h或--help:显示帮助; 
-n或--quiet或——silent:仅显示script处理后的结果; 
-V或--version:显示版本信息。 
  
sed -n 'n'p filenamenprint到桌面
sed -n '1,$'p test.txt1到结尾行
sed -n '1,3'p test.txt13
sed -n '/root/'p test.txt包含root
 sed -n '/^1/'p test.txt1开头的行
sed -n '/in$/'p test.txt以in结尾的行
sed -n '/r..o/'p test.txt包含r..o内容的行
sed -n '/ooo*/'p test.txt包含两个oo以上连续的行
sed -e '1'p -e '/111/'p -n test.txt第一行和包含111的行
sed '1'd test.txt删除第一行
sed '1,3'd test.txt删除第1到第3行
sed '/oot/'d test.txt删除含oot的行
sed '1,2s/ot/to/g' test.txt第一行到第二行ot替换为to
 ‘s’ 就是替换的命令, ‘g’ 为本行中全局替换,如果不加 ‘g’ 只换该行中出现的第一个 
sed 's#ot#to#g' test.txtot替换为to
除了可以使用 ‘/’ 作为分隔符外,还可以使用其他特殊字符例如 ‘#’ 或者 ‘@’ 都没有问题 
sed 's/[0-9]//g' test.txt删除文档所有数字
sed 's/[a-zA-Z]//g' test.txt删除文档所有字母
sed 's/\(rot\)\(.*\)\(bash\)/\3\2\1/' test.txt调换两个字符串的位置
sed 's/^.*$/123&/' test.txt行首增加123
sed -i 's/ot/to/g' test.txt直接修改文件的内容
  
练习 
1.  /bin/cp /etc/passwd  /root/test.txt ;  sed -n '1,$'p test.txt/etc/passwd 复制到/root/test.txt,用sed打印所有行
2.  sed -n '3,10'p test.txt打印test.txt的3到10行
3.  sed -n '/root/'p test.txt打印test.txt 中包含 ‘root’ 的行
4.  sed '15,$'d  test.txt删除test.txt 的15行以及以后所有行
5.  sed '/bash/'d test.txt删除test.txt中包含 ‘bash’ 的行
6.  sed 's/root/toor/g' test.txt替换test.txt 中 ‘root’ 为 ‘toor’
7.  sed 's#sbin/nologin#bin/login#g' test.txt替换test.txt中 ‘/sbin/nologin’ 为 ‘/bin/login’
8.  sed '5,10s/[0-9]//g' test.txt删除test.txt中5到10行中所有的数字
9.  sed 's/[^0-9a-zA-Z]//g' test.txt删除test.txt 中所有特殊字符(除了数字以及大小写字母)
10.  sed 's/\(^[a-zA-Z][a-zA-Z]*\)\([^a-zA-Z].*\)\([^a-zA-Z]\)\([a-zA-Z][a-zA-Z]*$\)/\4\2\3\1/' test.txt把test.txt中第一个单词和最后一个单词调换位置
11.  sed 's#\([^0-9][^0-9]*\)\([0-9][0-9]*\)\([^0-9].*\)\([^a-zA-Z]\)\([a-zA-Z][a-zA-Z]*$\)#\1\5\3\4\2#' test.txt把test.txt中出现的第一个数字和最后一个单词替换位置
12.  sed 's#\([^0-9][^0-9]*\)\([0-9][0-9]*\)\([^0-9].*$\)#\1\3\2#' test.txt把test.txt 中第一个数字移动到行末尾
13.  sed '20,$s/^.*$/aaa:&/' test.txt在test.txt 20行到末行最前面加 ‘aaa:’
  
head -n2 /etc/passwd |awk -F ':' '{print $1}'截取文档中以:分隔的第一段
head -n2 test.txt |awk -F':' '{print $0}'打印整行
head -n2 test.txt |awk -F':' '{print $1"#"$2"#"$3"#"$4}'打印1#2#3#4
awk '/oo/' test.txt 
awk -F ':' '$1 ~/oo/' test.txt 
  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值