zoukankan      html  css  js  c++  java
  • 文件管理(高级)

    一、文本处理三剑客命令初探

    sed

    流式编辑器,主要擅长对文件的编辑操作,我们可以事先定制好编辑文件的指令,然后让sed自动完成对文件的整体编辑

    实例:

    语法:
       sed [-hnV][-e<script>][-f<script文件>][文本文件]
    参数说明:
      -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
      -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
    -h 或 --help 显示帮助
    -n 或 -quite 或 -silent 仅显示script处理后的结果
    -V 或 -version 显示版本信息
    -i 直接修改读取的文件内容,而不是输出到终端
    动作说明:
    a 新增 a的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
    c 取代 c的后面可以接字串,这些字串可以取代n1,n2之间的行
    d 删除
    i 插入 i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
    p 打印 亦即将某个选择的数据印出。通常p会参与函数sed -n 一起运行
    s 取代 可以直接进行取代的工作!通常这个 s 的动作可以搭配正规表示法!例如:1,20s/old/new/g

    以行为单位的新增/删除

    示例:
    在testfile文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输入如下命令:
    [root@localhost test02]# sed -e 4a
    ewLine testfile 
    
    首先查看testfile中的内容
    [root@localhost test02]# cat testfile 
    HELLO LINUX!  
    Linux is a free unix-type opterating system.  
    This is a linux testfile!  
    Linux test
    
    使用sed命令后,输出结果如下:
    [root@localhost test02]# sed -e 4a
    ewLine testfile 
    HELLO LINUX!  
    Linux is a free unix-type opterating system.  
    This is a linux testfile!  
    Linux test
    newLine
    [root@localhost test02]# nl etc/passwd | sed '2,5d'
         1    root:x:0:0:root:/root:/bin/bash
         6    sync:x:5:0:sync:/sbin:/bin/sync
         7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
         8    halt:x:7:0:halt:/sbin:/sbin/halt
    ...... (后面省略) ......

    sed的动作为'2,5d',那个 d 就是删除!因为2-5行删除了,所以显示的数据就没有2-5行
    sed后面接的动作,务必以""两个单引号括住

    只要删除第 2 行
    [root@localhost test02]# nl /etc/passwd | sed '2d

    删除第 3 行到最后一行
    [root@localhost test02]# nl /etc/passwd | sed '3,$d'
    1 root:x:0:0:root:/root:/bin/bash
    2 bin:x:1:1:bin:/bin:/sbin/nologin

    在第二行后(亦即是加在第三行)加上[drink tea?]字样
    [root@localhost test02]# nl /etc/passwd | sed '2a drink tea'
    1 root:x:0:0:root:/root:/bin/bash
    2 bin:x:1:1:bin:/bin:/sbin/nologin
    drink tea
    3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
    ...... (后面省略) ......

    如果是要在第二行前
    [root@localhost test02]# nl /etc/passwd | sed '2i drink tea'
    1 root:x:0:0:root:/root:/bin/bash
    drink tea
    2 bin:x:1:1:bin:/bin:/sbin/nologin

    如果是要增加两行以上,在第二行后面加入两行字,例如Drink tea or ... 与 drink beer
    [root@localhost test02]# nl /etc/passwd | sed '2a Drink tea or ...
    drink beer ?'
    1 root:x:0:0:root:/root:/bin/bash
    2 bin:x:1:1:bin:/bin:/sbin/nologin
    Drink tea or ...
    drink beer ?
    3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
    ...... (后面省略) ......
     每一行之间都必须要以反斜杠[]来进行新行的添加,所以,上面的例子中,我们可以发现在第一行的最后面就有  存在

    以行为单位的替换与显示

    将2-5行的内容取代为[No 2-5 number] 

    [root@localhost test02]# nl /etc/passwd | sed '2,5c No 2-5 number'
    1 root:x:0:0:root:/root:/bin/bash
    No 2-5 number
    6 sync:x:5:0:sync:/sbin:/bin/sync

    透过这个方法我们就能够将数据整行取代了
    仅列出/etc/passwd文件内的第5-7行
    [root@localhost test02]# nl /etc/passwd | sed -n '5,7p'
    5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    6 sync:x:5:0:sync:/sbin:/bin/sync
    7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     可以透过这个sed的以行为单位的显示功能,就能够将某一个文件内的某些行号选择出来显示

    数据的搜寻并显示

    搜索/etc/passwd有root关键字的行
    [root@localhost test02]# nl /etc/passwd | sed '/root/p'

    如果root找到,除了输出所有行,还会输出匹配行
    使用-n的时候将只打印包含模板的行
    [root@localhost test02]# nl /etc/passwd | sed -n '/root/p'
    1 root:x:0:0:root:/root:/bin/bash
    10 operator:x:11:0:operator:/root:/sbin/nologin

    数据的搜寻并删除

    [root@localhost test02]# nl /etc/passwd | sed '/root/d'
         2    bin:x:1:1:bin:/bin:/sbin/nologin
         3    daemon:x:2:2:daemon:/sbin:/sbin/nologin
         4    adm:x:3:4:adm:/var/adm:/sbin/nologin
         5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    ...... 后面省略 ......
    第一行匹配的root已经删除了

    数据的搜寻并执行命令

    搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,
    这里把bash替换为blueshell,再输出这行:
    [root@localhost test02]# nl /etc/passwd | sed '/root/{s/bash/biueshell/;p;q}'
    1 root:x:0:0:root:/root:/bin/biueshell
    1 root:x:0:0:root:/root:/bin/biueshell


    ***最后的 q 是退出

    数据的搜寻并替换

    sed 's/要被取代的字串/新的字串/g'

    示例:
    [root@localhost test02]# cat file3 | sed 's/hello/HELLO/g'
    HELLO
    HELLO
    123
    123
    fun

    多点编辑

    一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换成blueshell
    
    [root@localhost test02]# nl /etc/passwd | sed -e '3,$d' -e 's/bash/biueshell/g'
         1    root:x:0:0:root:/root:/bin/biueshell
         2    bin:x:1:1:bin:/bin:/sbin/nologin
    
    -e  表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为biueshell

    直接修改文件内容(危险动作)

    sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!
    举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!
    因为文件太大了!那怎办?就利用 sed 啊!
    透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!

    追加行的说明

    4 行之后追加 1 行空行:
    #
    可以添加一个完全为空的空行 sed '4 a \' # 可以添加两个完全为空的空行 sed '4 a \n'

    awk

    awk主要用于处理有格式的文本,例如/etc/passwd这种

    AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

    之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。

    语法
    awk [选项参数] 'script' var=value file(s)
    或
    awk [选项参数] -f scriptfile var=value file(s)
    
    
    选项参数说明:
    
    -F fs    or   --field-separator fs
       指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
    -v var=value   or   --asign var=value
       赋值一个用户定义变量。
    -f scripfile   or   --file scriptfile
       从脚本文件中读取awk命令。
    -mf nnn   and   -mr nnn
       对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能
    在标准awk中不适用。
    -W compact or --compat, -W traditional or --traditional 在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。 -W copyleft or --copyleft, -W copyright or --copyright 打印简短的版权信息。 -W help or --help, -W usage or --usage 打印全部awk选项和每个选项的简短说明。 -W lint or --lint 打印不能向传统unix平台移植的结构的警告。 -W lint-old or --lint-old 打印关于不能向传统unix平台移植的结构的警告。 -W posix 打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;
    操作符**和**=不能代替^和^=;fflush无效。 -W re-interval or --re-inerval 允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。 -W source program-text or --source program-text 使用program-text作为源代码,可与-f命令混用。 -W version or --version 打印bug报告信息的版本。

    基本用法

    log.txt文本内容如下
    
    2 this is a test
    3 Are you like awk
    This's a test
    10 There are orange,apple,mongo
    用法一:
    awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号
    实例:
    1、每行按空格或TAB分割,输出文本中的1,4项
    [root@localhost test02]# awk '{print $1,$4}' log.txt 
    2 a
    3 like
    This's 
    10 orange,apple,mongo

    2、格式化输出
    [root@localhost test02]# awk '{printf "%-8s %-10s ",$1,$4}' log.txt
    2 a
    3 like
    This's
    10 orange,apple,mongo

    用法二:

    awk -F    #-F相当于内置变量FS,指定分隔字符

    实例:

    使用 " , " 分割
    [root@localhost test02]# awk -F, '{print $1,$2}' log.txt
    2 this is a test
    3 Are you like awk
    This's a test
    10 There are orange apple
    或者使用内建变量
    [root@localhost test02]# awk 'BEGIN{FS=","}{print $1,$4}' log.txt
    2 this is a test
    3 Are you like awk
    This's a test
    10 There are orange
     
    使用多个分隔符:先使用空格分割,然后对分割结果再使用 ',' 分割
    [root@localhost test02]# awk -F '[ ,]' '{print $1,$2,$5}' log.txt
    2 this test
    3 Are awk
    This's a
    10 There apple
     

    用法三:

    awk -v    #设置变量

    实例:

    [root@localhost test02]# awk -va=1 '{print $1,$1+a}' log.txt 
    2 3
    3 4
    This's 1
    10 11
    
    [root@localhost test02]# awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt 
    2 3 2s
    3 4 3s
    This's 1 This'ss
    10 11 10s

    用法四:

    awk -f {awk脚本} {文件名}

    实例:

    $ awk -f cal.awk log.txt

    grep

    grep擅长过滤内容

    Linux grep命令用于查找文件里符合条件的字符串。

    grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 - ,则grep指令会从标准输入设备读取数据

    语法:
        grep 选项 '正则' 文件路径
    选项:
    -n 在过滤出的每一行前面加上它在文件中的相对行号
    -i 忽略大小写
    -color 颜色
    -l 如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root'/etc
    -R,-r,-recursive 递归

    详情参见: Linux grep 命令 | 菜鸟教程 (runoob.com)

    示例:

    [root@localhost test02]# grep '^root' /etc/passwd
    root:x:0:0:root:/root:/bin/bash

    [root@localhost ~]# grep -n 'bash$' /etc/passwd
    1:root:x:0:0:root:/root:/bin/bash
    20:zhzhang:x:1000:1000:zhzhang:/home/zhzhang:/bin/bash
    21:zh:x:1001:1001::/home/zh:/bin/bash
    22:test2:x:1002:1002::/home/test2:/bin/bash
    24:egon:x:1003:1003::/home/egon:/bin/bash

    grep也支持管道,我们可以发现三剑客命令都支持管道
    [root@localhost ~]# ps aux | grep ssh
    [root@localhost ~]# ps aux | grep [s]sh

    * ps(process status) 命令用于显示当前进程的状态,类似于windows的任务管理器
    从文件内容查找匹配指定字符串的行
    [root@localhost ~]# grep "被查找的字符串" 文件名

    从文件内容查找与正则表达式匹配的行
    [root@localhost ~]# grep -e "正则表达式" 文件名

    查找时不区分大小写
    [root@localhost ~]# grep -i "被查找的字符串" 文件名

    查找匹配的行数
    [root@localhost ~]# grep -c "被查找的字符串" 文件名

    从文件内容查找不匹配指定字符串的行
    [root@localhost ~]# grep -v "被查找的字符串" 文件名

    awk、sed、grep更适合的方向:

     grep   更适合单纯的查找或匹配文本
     sed    更适合编辑匹配到的文本
     awk    更适合格式化文本,对文本进行较复杂格式处理

    二、文件管理之:文件查找

    一、查看命令所属文件  which

    which 命令用于查找文件
    which 指令会在环境变量$PATH设置的目录里查找符合条件的文件

    语法:
    which [文件...]
    参数:
    -n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名
    -p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径
    -w 指定输出是栏位的宽度
    -V 显示版本信息
    [root@localhost ~]# which bash /usr/bin/bash # bash可执行的程序的绝对路径

    * ps:一些命令的路径都被配置到了环境变量PATH里面

    二、查找文件  find

    Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。
    如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 语法 find path
    -option [ -print ] [ -exec -ok command ] {} ; 参数说明 : find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。
    如果 path 是空字串则使用目前路径
    如果 expression 是空字串则使用 -print 为预设 expression。 expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。 -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 -amin n : 在过去 n 分钟内被读取过 -anewer file : 比文件 file 更晚被读取过的文件 -atime n : 在过去n天内被读取过的文件 -cmin n : 在过去 n 分钟内被修改过 -cnewer file :比文件 file 更新的文件 -ctime n : 在过去n天内被修改过的文件 -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写 -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写 -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。 -type c : 文件类型是 c 的文件。 d: 目录 c: 字型装置文件 b: 区块装置文件 p: 具名贮列 f: 一般文件 l: 符号连结 s: socket -pid n : process id 是 n 的文件 你可以使用 ( ) 将运算式分隔,并使用下列运算。 exp1 -and exp2 ! expr -not expr exp1 -or exp2 exp1, exp2
    按文件名:
    [root@localhost ~]# find /etc -name 'ifcfg-eth0'
    [root@localhost ~]# find /etc -iname 'ifcfg-eth0'           -i 忽略大小写
    [root@localhost ~]# find /etc -iname 'ifcfg-eth*'
    按文件大小
    [root@localhost ~]# find /etc -size +3M          #大于3M
    [root@localhost ~]# find /etc -size 3M
    [root@localhost ~]# find /etc -size -3M
    [root@localhost ~]# find /etc -size +3M -ls     # ls 找到的处理动作
    指定查找的目录深度
    1、-maxdepth level 最大搜索深度
    比如find -maxdepth 1 就表示只搜索1级,即只搜索该目录下的文件,而不再搜索其下的目录中的文件
    2、-mindepth level 最小搜索深度
    比如find -mindepth 2 就表示至少要搜索二级(搜索路径默认从当前开始)

    [root@localhost ~]# find / -maxdepth 5 -a -name "ifcfg-eth0" # -a并且,-o或者,不加-a,默认就是-a
    按时间查找(atime,mtime,ctime)
    以"天"为单位
    -atime [+/-]# 指的是文件最后被读取的时间,可使用touch命令更改为当前时间
    -mtime [+/-]# 指的是文件内容最后被修改的时间,修改动作可是使用echo重定向、vi等
    -ctime [+/-]# 指的是文件本身最后被变更的时间,变更动作可是使chmod、chgrp、mv等
    # 天数
    + 表示多少天以上
    - 表示多少天以内

    以"分钟"为单位(用法同上面的以"天"为单位)
    -amin
    -mmin
    -cmin

    [root@localhost ~]# find /etc -atime +3               
    [root@localhost ~]# find /etc -mtime 3                
    [root@localhost ~]# find /etc -ctime -3              
    按文件属主、属组查找
    [root@localhost ~]# find /home -user egon               # 属主是egon的文件
    [root@localhost ~]# find /home -group it                # 属组是it组的文件
    [root@localhost ~]# find /home -user egon -group it
    [root@localhost ~]# find /home -user egon -a -group it  # 同上意思一样
    [root@localhost ~]# find /home -user egon -o -group it
    [root@localhost ~]# find /home -nouser  # 用户还存在,在/etc/passwd中删除了记录
    [root@localhost ~]# find /home -nogroup  # 用户还存在,在/etc/group中删除了记录
    [root@localhost ~]# find /home -nouser -o -nogroup
    按文件类型
    [root@localhost ~]# find /dev -type f                       # f普通
    [root@localhost ~]# find /dev -type d                       # d目录
    [root@localhost ~]# find /dev -type l                       # l链接
    [root@localhost ~]# find /dev -type b                       # b块设备
    [root@localhost ~]# find /dev -type c                       # c字符设备
    [root@localhost ~]# find /dev -type s                       # s套接字
    [root@localhost ~]# find /dev -type p                       # p管道文件
    根据inode号查找    -inum n
    [root@localhost ~]# find / -inum 1811
    按文件权限
    [root@localhost ~]# find . -perm 644 -ls
    [root@localhost ~]# find . -perm -644 -ls
    [root@localhost ~]# find . -perm -600 -ls
    [root@localhost ~]# find /sbin -perm -4000 -ls      # 包含set uid
    [root@localhost ~]# find /sbin -perm -2000 -ls      # 包含set gid
    [root@localhost ~]# find /sbin -perm -1000 -ls      # 包含sticky
    扩展知识:find 结合 xargs

    xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

    xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。

    xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

    xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。

    xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

    之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令,例如:

    find /sbin -perm +700 |ls -l       #这个命令是错误的
    find /sbin -perm +700 |xargs ls -l   #这样才是正确的
    xargs 一般是和管道一起使用
    命令格式:
    somecommand |xargs -item command
    参数:
    
    -a file 从文件中读入作为sdtin
    -e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
    -p 当每次执行一个argument的时候询问一次用户。
    -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
    -t 表示先打印命令,然后再执行。
    -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
    -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
    -s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
    -L num 从标准输入一次读取 num 行送给 command 命令。
    -l 同 -L。
    -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
    -x exit的意思,主要是配合-s使用。。
    -P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。
    实例:

    [root@localhost ~]# find . -name "egon*.txt" |xargs rm -rf ​ [root@localhost ~]# find /etc -name "ifcfg-eth0" |xargs -I {} cp -rf {} /var/tmp [root@localhost ~]# find /test -name "ifcfg-ens33" |xargs -I {} mv {} /ttt [root@localhost ~]# find /ttt/ -name "ifcfg*" |xargs -I {} chmod 666 {}

    三、文件管理之上传与下载


    四、文件管理之:输出与重定向

    五、文件管理之:字符处理命令

    sort命令   用于将文件内容加以排序

    语法
    sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
    
    参数说明:
    -b 忽略每行前面开始出的空格字符。 -c 检查文件是否已经按照顺序排序。 -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。 -f 排序时,将小写字母视为大写字母。 -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。 -m 将几个排序好的文件进行合并。 -M 将前面3个字母依照月份的缩写进行排序。 -n 依照数值的大小排序。 -u 意味着是唯一的(unique),输出的结果是去完重了的。 -o<输出文件> 将排序后的结果存入指定的文件。 -r 以相反的顺序来排序。 -t<分隔字符> 指定排序时所用的栏位分隔字符。 +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 --help 显示帮助。 --version 显示版本信息。
    准备文件,写入一段无序的内容:
    [root@localhost ~]# cat >> file.txt <<EOF
    b:3
    c:2
    a:4
    e:5
    d:1
    f:11
    EOF
    
    例一:
    [root@localhost test02]# sort file.txt
    例二:
    [root@localhost test02]# sort -t":" -n -k2 file.txt
    例三:
    [root@localhost test02]# sort -t":" -n -r -k2 file.txt

    uniq命令  用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用

    语法
    uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
    
    参数:
    -c或--count 在每列旁边显示该行重复出现的次数。 -d或--repeated 仅显示重复出现的行列。 -f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。 -s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。 -u或--unique 仅显示出一次的行列。 -w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。 --help 显示帮助。 --version 显示版本信息。 [输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据; [输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。
    准备文件,写入一段无序的内容:
    [root@localhost ~]# cat > file.txt <<EOF
    hello
    123
    hello
    123
    func
    EOF
     

    例一:
    [root@localhost test02]# sort file.txt
    例二:
    [root@localhost test02]# sort file.txt | uniq
    例三:
    [root@localhost test02]# sort file.txt | uniq -c

    cut命令  用来显示行中的指定部分,删除文件中指定字段

    语法
    cut  [-bn] [file]
    cut [-c] [file]
    cut [-df] [file]
    
    使用说明: cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。 如果不指定 File 参数,cut 命令将读取标准输入。必须指定
    -b、-c 或 -f 标志之一。 参数: -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。 -c :以字符为单位进行分割。 -d :自定义分隔符,默认为制表符。 -f :与-d一起使用,指定显示哪个区域。 -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的 范围之内,该字符将被写出;否则,该字符将被排除
    示例:
    [root@localhost ~]# head -1 /etc/passwd root:x:0:0:root:/root:/bin/bash [root@localhost ~]# head -1 /etc/passwd | cut -d":" -f1,3,6 root:0:/root

    tr命令  替换或删除命令

    语法
    tr [-cdst][--help][--version][第一字符集][第二字符集]  
    tr [OPTION]…SET1[SET2] 
    
    参数说明:
    -c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换 -d, --delete:删除指令字符 -s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符 -t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等 --help:显示程序用法信息 --version:显示程序本身的版本信息
    [root@localhost ~]# head -1 /etc/passwd | tr "root" "ROOT"
    ROOT:x:0:0:ROOT:/ROOT:/bin/bash
    [root@localhost ~]#
    [root@localhost ~]# head -1 /etc/passwd | tr -d "root"
    :x:0:0::/:/bin/bash

    wc命令  统计,计算数字

    语法
    wc [-clw][--help][--version][文件...]
    
    参数:
    -c或--bytes或--chars 只显示Bytes数。 -l或--lines 显示行数。 -w或--words 只显示字数。 --help 在线帮助。 --version 显示版本信息。
    [root@localhost test02]# ll file.txt 
    -rw-r--r--. 1 root root 25 Dec  9 10:26 file.txt
    [root@localhost test02]# wc -c file.txt 
    25 file.txt

    六、文件管理之打包压缩

    七、文件系统

  • 相关阅读:
    编程语言学哪个比较好?
    C#一定要避免程序中很多的依靠
    EXPIREAT
    EXISTS
    DUMP
    Python之sys模块
    Python的OS模块
    CentOS 7上安装gitlab-runner
    PyCharm激活方法
    Linux03 文件的相关操作(touch、rm、mv、cat)
  • 原文地址:https://www.cnblogs.com/ZhZhang12138/p/14107115.html
Copyright © 2011-2022 走看看