风起漂泊 发表于 2018-8-25 11:55:30

shell文件处理工具

  vim /etc/resolve.conf 查看dns
  6.shell脚本命令
  1.diff
  diff      file file   比较两个文件的不同
  -c         显示周围的行
  -u          按照一格式统一输出生成补丁
  -r          比较两个目录中文件的不同
  pattch      file    file.path   打补丁
  -b            备份原文件
  2.grep
  grep    关键字符    文件|目录   在文件或目录中查找含有关键字的行
  grep    -i            忽略大小写
  -n            显示关键字所在行
  -c            显示过滤结果的行数
  -v            反向过滤
  -E      “关键字1|关键字2”    过滤多个关键字
  -r      目录      在目录中查找含有关键字的文件
  注意:^关键字   以关键字开头
  关键字$   以关键字结尾
  ^root 以root开头
  root$ 以root结尾
  3.cut
  cut 截取字符
  cut -d分隔符指定分隔符
  cut -f1,7    显示指定的列
  cut -c      显示指定字符
  cut -d " " -f 10    截取空格后第十列到下一个分隔符空格之间的内容
  4.sort 排序
  sort
  -n纯数字排序
  -u去掉重复的
  |uniq -c去掉重复并统计重复个数
  -t指定分隔符
  -k指定列
  sort -t : -k 2 file -nu
  5.uniq
  sort file | uniq -c 去掉多余并统计重复次数
  -d 显示多余行
  -u 显示唯一的行
  6.tr
  tr 'a-z' 'A-Z' file
  sed 's/原字符/替换字符/g' file
  sed -e '策略1 ' -e '策略2 'file多个策略用-e
  sed -i file 把转入后的文件输出到指定文件
  sed '3,5s/原字符/替换字符/' file
  sed xd 屏蔽指定行
  sed xp 复制指定行
  sed -n xp 只显示指定行
  脚本
  #!/bin/bash
  MAX=$( wc- l $1 | cut -d " " -f 1)
  for NUM in $( seq $MAX )
  do
  USERNAME=$(sed -n ${NUM}p$1)
  PASSWD=$(sed in ${NUM}p $2)
  useradd $USERNAME
  echo $PASSWD | passwd --stdin$USERNAMR
  done
  7.awk   数据处理工具,将一行分成数个段进行处理,以字段为最小的处理单位
  awk '条件类型1{动作1} 条件类型2{动作2}...' filename
  # last -n 5
  kiosk    pts/0      :0               Wed Nov9 19:46still logged in
  kiosk    pts/0      :0            Wed Nov9 18:57 - 19:46(00:48)
  kiosk    :0         :0               Wed Nov9 18:57still logged in
  reboot   system boot3.10.0-327.el7.x Thu Nov 10 02:56 -19:59(-6:-57)
  kiosk    :0         :0               Wed Nov9 17:55 - 17:55(00:00)
  wtmp begins Wed Sep 28 00:38:05 2016
  # last -n 5 | awk '{print $1 "\t" $3}'
  kiosk   :0
  kiosk   :0
  kiosk   :0
  rebootboot
  kiosk   :0
  $0 代表一整行的数据
  内置变量
  NF 每一行($0)拥有的字段总数
  NR 目前awk处理的是第几行的数据
  FS 目前的分隔字符,默认是空格键
  # last -n 5 | awk '{print $1 "lines:" NR "\tcolumes: "NF}'
  kiosklines:1   columes: 10
  kiosklines:2   columes: 10
  kiosklines:3   columes: 10
  rebootlines:4    columes: 11
  kiosklines:5   columes: 10
  lines:6columes: 0
  wtmplines:7columes: 7
  条件类型
  # cat /etc/passwd | awk '{FS=":"} $3
页: [1]
查看完整版本: shell文件处理工具