8.10-8.13 笔记

知识点 shell基础知识

cut,sort,wc,uniq,tee,tr,split


cut分割

选项

  • -d 指定字段的分隔符,默认的字段分隔符为“TAB”
  • -f 指定段号
  • -c 指定第几个字符
[root@localhost test]#cat passwd.txt | head -5 |cut -d: -f1-6   //用的比较多
root:x:0:0:root:/root
bin:x:1:1:bin:/bin
daemon:x:2:2:daemon:/sbin
adm:x:3:4:adm:/var/adm
lp:x:4:7:lp:/var/spool/lpd
[root@localhost test]#cat passwd.txt | head -5 |cut -c 4   
t
:
m
:
x

sort排序

选项

  • n 按数字排序
  • r 反序
  • t 分隔符
  • k 第几段
[root@localhost test]#sort -n passwd.txt //正序排列


adm:x:3:4:adm:/var/adm:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@localhost test]#sort -r passwd.txt  //反序排列
www:x:1000:1000::/home/www:/bin/bash
www:x:1000:1000::/home/www:/bin/bash
www:x:1000:1000::/home/www:/bin/bash
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

wc

选项

  • l 统计行数
  • m 统计字符数
  • w 统计词
  • L 和m差不多,不过不计算最后的换行符$
[root@localhost test]#wc -l < passwd.txt 
93
[root@localhost test]#wc -m < passwd.txt 
2941
[root@localhost test]#wc -w < passwd.txt 
134
[root@localhost test]#wc -L < passwd.txt 
68

uniq去重

去重命令,不过不是很智能,需要配合sort一起使用

[root@localhost test]#cat tt.txt 
aaa
bbb
ccc
ddd
abc
aaa
adc
ddd
bbb
bac

[root@localhost test]#uniq tt.txt 
aaa
bbb
ccc
ddd
abc
aaa
adc
ddd
bbb
bac

[root@localhost test]#sort tt.txt | uniq

aaa
abc
adc
bac
bbb
ccc
ddd
[root@localhost test]#sort tt.txt | uniq -c  //统计相同的行有多少行
      1 
      2 aaa
      1 abc
      1 adc
      1 bac
      2 bbb
      1 ccc
      2 ddd
[root@localhost test]#chattr +i tt.txt 
[root@localhost test]#lsattr tt.txt    //不会更改源文件属性!
----i----------- tt.txt
[root@localhost test]#sort tt.txt | uniq -c
      1 
      2 aaa
      1 abc
      1 adc
      1 bac
      2 bbb
      1 ccc
      2 ddd

tee重定向并显示

>的同时并显示到屏幕上,将前面的结果通过 ‘| tee ’输出给后面的文件并且输出在屏幕上。

[root@localhost test]#more middle.txt | tee more.txt
cat: hello: 没有那个文件或目录
cat: hello: 没有那个文件或目录
[root@localhost test]#ls
11.txt    hello.txt   more.txt    semanage.conf  tt.txt  wwww.txt
copy.txt  middle.txt  passwd.txt  test.zip       www     xxoo
[root@localhost test]#cat more.txt 
cat: hello: 没有那个文件或目录
cat: hello: 没有那个文件或目录

tr替换字符

  • d 表示删除某个字符,后面跟要删除的字符
  • s 表示删除重复的字符
[root@localhost test]#cat more.txt 
cat: hello: 没有那个文件或目录
cat: hello: 没有那个文件或目录
[root@localhost test]#cat more.txt | tr 'cat' 'dog'
dog: hello: 没有那个文件或目录
dog: hello: 没有那个文件或目录
[root@localhost test]#cat more.txt | tr '[a-z]' '[A-Z]'
CAT: HELLO: 没有那个文件或目录
CAT: HELLO: 没有那个文件或目录
[root@localhost test]#cat more.txt | tr -d ca
t: hello: 没有那个文件或目录
t: hello: 没有那个文件或目录

split切割

选项

  • b 按照大小来分割,默认单位是byte
  • l 按照行数来分割
[root@localhost test]#ll xxoo
-rw-r--r--. 1 root root 2321 10月 31 16:49 xxoo
[root@localhost test]#split -b 1000 xxoo 
[root@localhost test]#ll
-rw-r--r--. 1 root root 1000 11月 11 17:01 xaa
-rw-r--r--. 1 root root 1000 11月 11 17:01 xab
-rw-r--r--. 1 root root  321 11月 11 17:01 xac
-rw-r--r--. 1 root root 2321 10月 31 16:49 xxoo
[root@localhost test]#du -sh xaa
4.0K	xaa
[root@localhost test]#du -sh xab
4.0K	xab
[root@localhost test]#du -sh xac
4.0K	xac
[root@localhost test]#split -l 20 xxoo 
-rw-r--r--. 1 root root  926 11月 11 17:04 xaa   //把老的切割文件给覆盖了!
-rw-r--r--. 1 root root  949 11月 11 17:04 xab
-rw-r--r--. 1 root root  446 11月 11 17:04 xac
-rw-r--r--. 1 root root 2321 10月 31 16:49 xxoo
[root@localhost test]#vi xaa

      1  Authors: Jason Tang <jtang@tresys.com>
      2 #
      3 # Copyright (C) 2004-2005 Tresys Technology, LLC
      4 #
      5 #  This library is free software; you can redistribute it and/or
      6 #  modify it under the terms of the GNU Lesser General Public
      7 #  License as published by the Free Software Foundation; either
      8 #  version 2.1 of the License, or (at your option) any later version.
      9 #
     10 #  This library is distributed in the hope that it will be useful,
     11 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13 #  Lesser General Public License for more details.
     14 #
     15 #  You should have received a copy of the GNU Lesser General Public
     16 #  License along with this library; if not, write to the Free Software
     17 #  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     18 #
     19 # Specify how libsemanage will interact with a SELinux policy manager.
     20 # The four options are:
~                                                                                                                 
~                                                                                                                 
:set nu
[root@localhost test]#split -l 50 xxoo cat  //文件名指定以cat开头,这样就不会覆盖了!
[root@localhost test]#ll
-rw-r--r--. 1 root root 2304 11月 11 17:09 cataa
-rw-r--r--. 1 root root   17 11月 11 17:09 catab
-rw-r--r--. 1 root root  926 11月 11 17:04 xaa
-rw-r--r--. 1 root root  949 11月 11 17:04 xab
-rw-r--r--. 1 root root  446 11月 11 17:04 xac
-rw-r--r--. 1 root root 2321 10月 31 16:49 xxoo


特殊符号

  • $ 用作变量前面的标识符,
  • ; 如果想在一行中间允许2个以上命令,可以使用该符号
  • ~ 用户的home目录
  • & 如果想把一条命令放到后台可以使用该符号
  • [] 上面讲过的[]中的值任取一个。
  • &&和|| 逻辑与和逻辑或
[root@localhost test]#mkdir /test/1/2 || ll
mkdir: 无法创建目录"/test/1/2": 没有那个文件或目录
-rw-r--r--. 1 root root  120 11月 11 10:28 11.txt
-rw-r--r--. 1 root root 2304 11月 11 17:09 cataa
-rw-r--r--. 1 root root   17 11月 11 17:09 catab
-rw-r--r--. 1 root root  926 11月 11 17:04 xaa
-rw-r--r--. 1 root root  949 11月 11 17:04 xab
-rw-r--r--. 1 root root  446 11月 11 17:04 xac
-rw-r--r--. 1 root root 2321 10月 31 16:49 xxoo
[root@localhost test]#mkdir /test/1/2 && ll
mkdir: 无法创建目录"/test/1/2": 没有那个文件或目录
[root@localhost test]#touch 12.txt
[root@localhost test]#touch 1.txt
[root@localhost test]#touch 2.txt
[root@localhost test]#ls [12].txt
1.txt  2.txt
[root@localhost test]#ls *.txt
11.txt  12.txt  1.txt  2.txt  copy.txt  hello.txt  middle.txt  more.txt  passwd.txt  tt.txt  wwww.txt

转载于:https://my.oschina.net/u/3997678/blog/2874697

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值