设为首页 收藏本站
查看: 556|回复: 0

1212 sort\sed\vim\shell-Stephen

[复制链接]

尚未签到

发表于 2018-8-25 11:27:16 | 显示全部楼层 |阅读模式
  sort 排序不影响原文件
  sort /etc/passwd
  sort
  -o 文件名:把结果保存在某个文件中
  -r (reverse)逆序显示
  -n 以数值大小排序
  -f 忽略大小写
  -u 去掉重复行
  -t : -k  默认以空格分割 ,-k 表比较第几段
  实例:sort -n -t : -k 3 /etc/passwd
  uniq 去掉紧挨着重复的行
  uniq  -c 显示重复的次数
  实例:sort 文件 | uniq -c
  -u  不重复的行
  -d 重复的行
  cut -d: -f7 /etc/passwd |sort |grep -V "^$"|uniq
  条件判断
  test expression   在if中应用
  [ expression ]    #[ 1 -gt 2 ]  注意两端空格
  ` expression `    #` 1 -gt 2 `
  链接条件的:
  -a 与
  -o 或
  !  非,取反
  短路操作符,连接命令的:
  &&
  ||
  比较两个数的大小,显示最大数
  #!/bin/bash
  [ $1 -gt $2 ] && echo "$1 is the MAX" || echo "$2 is the MAX"
  条件测试:
  整数测试
  -gt
  -lt
  -ge
  -le
  -eq
  -ne
  >  >=  不能在[]中用,但能在(())中应用
  字符串测试
  =等于     [ "$a" = "$b" ]
  !=不等于     [ "$a" != "$b" ]
  大于 [[ “$a” > “$b” ]]
  -z 字符串为"null", 意思就是字符串长度为零
  -n 字符串不为"null"
  文件测试
  -e FILE
  -f
  -d
  -r 读
  -w写
  -x执行
  -L/-h  FILE :  是否符号链接文件
  —O :测试文件属主是否是你
  -G:          属组
  [ ! -e /tmp/a ]
  [ !-e /tmp/dir ] && mkdir /tmp/dir
  diff/patch:
  (different)
  diff:生成补丁的工具
  patch:补补丁的工具
  diff vimrc vimrc2 > vimrc.pacth
  patch vimrc < vimrc.pacth
  patch vimrc2 dir3/
  cd dir1
  patch -p1 <  dir3/
  patch -p2 < dir3/a/
  aspell check file :检查单词
  look  查词库
  #look  head  查词库
  #cat /etc/passwd  |tr 'a-z' 'A-Z'
  #cat /etc/passwd  |tr 'abc'  ' '
  #cat /etc/passwd  |tr 'abc' 'cba'
  sed   (stream edit)行编辑器
  #sed '/root/p' /etc/passwd
  #sed '/root/p' /etc/passwd |uniq -d
  #sed -n  '/root/p' /etc/passwd  只显示匹配到的行
  #sed '/root/d' /etc/passwd   删除
  #sed 's/root/ROOT/' /etc/passwd  搜索root,替换为ROOT (默认替换每行第一个)
  #sed 's/root/ROOT/g' /etc/passwd   替换每行的所有
  #sed '1,5s/root/ROOT/g' /etc/passwd   指定1-5行
  #sed '10,$s/root/ROOT/g' /etc/passwd  指定10-最后一行
  #sed '/root/,/student/s/root/ROOT/g' /etc/passwd  第一个root行到第一个student的行
  任何字母符号都可以作为分隔符,这样就不需要 \ 转义了
  s/r\(..\)t/R\1T/g
  r..t--->r..table
  s/r..t/&able/
  选项-i 直接编辑源文件(谨慎使用)
  #sed -i 's/root/ROOT/g' /etc/passwd   (g全局,i忽略大小写;g与i用法一样)
  i:行之前加入一行 #sed 's/root/i\enable =0' /etc/passwd
  a:行之后加入一行         #sed 's/root/a\enable =0' /etc/passwd
  加入多行,用换行符\n    #sed 's/root/a\A =2\n B=3' /etc/passwd
  选项
  -e  指定多个操作
  #sed -e 's/root/ROOT/g' -e 's/student/STUDENT/g' /etc/passwd
  -f  从文件中读取条件
  #sed -f  a.txt /etc/passwd
  下午:
  sed 非交互式,逐行进行
  vi  模式化的编辑器
  命令模式
  输入模式
  末行模式
  命令-->输入 i ,a
  输入-->命令Esc
  命令到末行 :
  末行到命令 Esc   (双击)
  打开方式
  vim
  vim  file
  退出
  :wq
  :q
  :q!
  :w!
  命令下退出
  tcrl +z
  shift +zz  (正常退出)
  vim  +n file 打开后光标在第n行
  vim +/pattern      file    打开后光标在pattern匹配的位置
  命令下:
  h, j, k, l
  左 下 上 右
  行内移动:
  ^:第一个非空白字符
  0(数字):绝对行首
  $:绝对行尾
  单词为单位
  w 下一个单词词首
  b 本单词词首,再下单词词首
  e (end)本单词词尾,再下单词词尾
  行间:
  nG  第n行
  G  最后一行
  :n   第n行
  句:)(
  段落:}{
  w,6w
  命令-->输入
  i光标前
  I 光标行首
  a 光标后
  A光标行尾
  o:光标所在行的下方
  O:光标所在行的上方
  c 删除后再插入状态
  C 删除一行进入插入
  3C
  3cw
  c) ; c(
  c{  ;  c}
  替换:
  r    替换光标所在的字符
  R    进入替换模式
  删除:
  x 删除光标所在字符(向后)  3x
  X  删除光标所在字符(向前)
  d
  dd
  ndd
  D(删除后保留空白)
  nD  删除n行
  dw (删除了单词后的空格)
  de (不删除了单词后的空格)
  复制粘贴:
  y :  yy   3yy  y$
  p   复制一整行,就在光标下一行开始粘贴(不是一行,就在光标处粘贴)
  P  复制一整行,就在光标上一行开始粘贴
  剪切:d -- p
  :10,90y
  :.,+100   当前光标到下100行
  :.,$-1   当前到倒数第二行
  :%d   全文删除
  可视模式:选择块
  v字符为单位
  V行为单位(对角线为单位的矩形块)
  {
  查询:
  /
  ?
  /\
  /\$[[:upper:]]\{1,\}
  n  下一个
  N  上一个
  }
  查找并替换(sed用法)
  :addr1,addr2s///gi
  :%s/\/REDHAT/gi
  :%s/^#//g     把#去掉
  撤销   u    U(撤销最近一次所有)
  Ctrl +r 撤销上次的撤销
  重做 :
  .(不能重做撤销命令)
  :%s/^[[:space:]]*#[[:space:]]*.*$//g
  %s/^.*#.*$//g
  :%s/^\(\([[:space:]]\)*[^[:space:]]\{1,\}\2\)#.*/\1/g   删除中间有#号的后面的部分(包括#)
  vim a b c d
  :next
  :prev
  :first
  :last
  vim -o  a b 竖直
  ctrl + w w
  :colse
  -O  水平
  vim   a
  :vsplit   (水平打开同一个文件的vi界面)
  :close    (关闭)
  定制vim显示
  :set nu
  在家目录
  vim .vimrc
  set un
  autoindent自动缩进
  :set autoindent
  #vimtutor  打开vim课程
  shell 算数运算
  $((expression))
  $[expression]
  let
  a=2
  b=3
  let a+=$b
  let a++
  选择分支,三类
  if [] ;then
  ..
  ..
  ..
  fi
  if [] ;then
  ..
  ..
  else
  ..
  ..
  fi
  if [] ;then
  ..
  elif [];then
  ..
  elif [];then
  ..
  else
  ...
  fi
  嵌套
  case
  循环分支
  while
  for
  until
  for Var in list ;do
  ..
  ..
  ..
  done
  let sum=0
  for I in 1 2 3 4 5 6 ;do
  let sum+=$I
  for I in $(seq 1 100);do
  let sum+=$I
  done
  echo &quot;The sum is :$sum&quot;
  for I in { 1..100};do
  let sum+=$I
  done
  echo &quot;The sum is :$sum&quot;
  #ping -c1 -W2 192.168.0.254
  for循环
  1)如何ping c类网
  2)如何ping b类网
  while [] ;do
  ...
  ...
  done
  let i=0
  let sum =0
  while [ $i -et 100 ]  ;do
  let sum+=$i
  let i+=2
  echo $sum
  done
  3)通过键盘输入用户名,判断用户是否存在,如果存在,就显示用户默认的shell
  vim sum.sh
  echo &quot;please...&quot;
  read A
  echo &quot;please...&quot;
  read B
  echo $(($A+$B))
  read -p &quot; ....&quot;  A
  while read line;do
  ...
  done

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-556332-1-1.html 上篇帖子: shell 脚本 ---数组 下篇帖子: if示例_shell脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表