Mrfei 发表于 2018-8-21 09:46:37

shell特殊符、sort、tee、

shell特殊符_cut命令
  * 任意个任意字符
  ? 任意一个字符
  # 注释字符
  \ 脱义字符
  # c='$a$b'====c=\$a\$b
  # c=\$a\$b
  # echo $c
  $a$b
  | 管道符
  cut 分割,-d 分隔符-f 指定段号   -c 指定第几个字符
  # cat /etc/passwd | cut -d ":" -f 1,2,3 | head -2 //截取
  root:x:0
  bin:x:1
  # cat /etc/passwd | cut -d ":" -f 1-5 | head -2
  root:x:0:0:root
  bin:x:1:1:bin
sort_wc_uniq命令
  sort 排序, -n 以数字排序 -r 反序    -t 分隔符 -kn1/-kn1,n2(了解)
  # sort /etc/passwd//按照ASCII编码
  adm:x:3:4:adm:/var/adm:/sbin/nologin
  avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
  avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
  bin:x:1:1:bin:/bin:/sbin/nologin
  daemon:x:2:2:daemon:/sbin:/sbin/nologin
  dbus:x:81:81:System message bus:/:/sbin/nologin
  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  games:x:12:100:games:/usr/games:/sbin/nologin
  halt:x:7:0:halt:/sbin:/sbin/halt
  # tail -15 1.txt | sort -n//按数字排序,特殊字符和字母都会被认为是0
  0
  a
  b
  f
  gtsd
  4
  5
  22
  23
  23
  23
  44
  # tail -15 1.txt | sort -nr//反序
  678
  44
  23
  23
  23
  uniq 去重, -c统计行数
  # sort 1.txt |uniq -c//排序去重
  2
  3 23
  1 3
  2 4
  1 44
  2 5
  1 678
  2 a
  1 adm:x:3:4:adm:/var/adm:/sbin/nologin
  2 b
  wc -l 统计行数 -m 统计字符数 -w 统计词
  # wc -l 1.txt //统计行数
  38 1.txt
  # vi 2.txt
  11
  22
  # wc -m 2.txt //字符数
  6 2.txt
  # cat -A 2.txt //-A所有字符 $换行符
  11$
  22$
  # wc -w 2.txt //词数 以空白字符作为分隔符
  2 2.txt
tee_tr_split命令
  tee 和>类似,重定向的同时还在屏幕显示
  # sort 1.txt |uniq -c >3.txt//这种方式无法再屏幕输出
  # cat 3.txt
  2
  1 0
  1 111
  1 22
  3 23
  1 3
  2 4
  1 44
  2 5
  1 678
  2 a
  1 adm:x:3:4:adm:/var/adm:/sbin/nologin
  1 avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
  # sort 1.txt |uniq -c | tee 3.txt //重定向在屏幕显示结果
  2
  1 0
  1 111
  1 22
  3 23
  1 3
  2 4
  1 44
  2 5
  1 678
  # sort 1.txt |uniq -c |tee -a 3.txt //追加-a
  tr 替换字符,tr 'a' 'b',大小写替换tr '' ''
  # echo 'lsxlinux' |tr 'sl' 'SL'//将sl替换成SL
  LSxLinux
  # echo 'lsxlinux' |tr 'a-z' 'A-Z' //将所有小写字母替换成大写字母
  LSXLINUX
  # echo 'lsxlinux' |tr 'a-z' '1'
  11111111
  split 切割,-b大小(默认单位字节),-l行数
  # find / -type f -name '*.conf' -exec cat {} > 1.txt \;
  # split -b 1000 1.txt lsx.//指定前缀
  # ls
  1.txtlsxablsxadlsxaflsxahlsxajlsxallsxanlsxaplsxar
  lsxaalsxaclsxaelsxaglsxailsxaklsxamlsxaolsxaqlsxas
  # du -sb *
  # split -l 10 1.txt//指定10行
  # wc -l *
  399 1.txt
  10 xaa
  10 xab
  10 xac
shell特殊符号(下)
  $ 变量前缀,!$组合,正则里面表示行尾
  !$ 命令行表示历史命令里最后一行最后一个参数
  ;多条命令写到一行,用分号分割
  ~ 用户家目录,后面正则表达式表示匹配符
  & 放到命令后面,会把命令丢到后台
  > >> 2> 2>> &>
  [ ] 指定字符中的一个,,,
  || 和 && ,用于命令之间
  ||或者:当执行前面一句成功就不在执行后面一句(不管后面那句成功与否)
  # ls xao || lsx xxx
  Xao
  如果前面执行不成功的继续执行后面一句
  # lsx xxx || ls xao
  -bash: lsx: 未找到命令
  xao
  &&当前面一句执行不成功的后面不在执行;前面成功的会继续执行后面
  # ls xao && lsx xxx
  xao
  -bash: lsx: 未找到命令
  # lsx xxx && ls xao
  -bash: lsx: 未找到命令

页: [1]
查看完整版本: shell特殊符、sort、tee、