CentOS 5系统管理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.5 文本处理命令

内容提要

1.掌握常用的文本显示命令。

2.掌握常用的文本处理命令。

cat命令

● 功能说明:用于从文件头到文件尾方向滚屏显示文本文件内容。

● 命令格式:cat [参数] [<文件> …]

● 常用参数:

➢ -n : 由1开始对所有输出的行进行编号。

➢ -b : 和-n相似,只不过对于空行不编号。

➢ -s : 当遇到有连续两行以上的空行时,使用一个空行代替。

● 使用示例:

        $ cat file
        $ cat -n file

提示:

1.系统还提供了一个tac命令,用于从文件尾到文件头显示文件内容。

2.系统还提供了一个rev命令,与tac不同,它并不反转行序,而是把每行的内容反转。

3.可以使用cat命令连接多个文本文件,如:

        $ cat file1 file2 > files

more命令

● 功能说明:从文件头到文件尾分屏显示文本文件内容。

● 命令格式:more [参数] [<文件> …]

● 常用参数:

➢ -d : 显示提示信息“[Press space to continue, 'q' to quit.]”。

➢ -s : 当遇到有连续两行以上的空行时,使用一个空行代替。

➢ +num : 从第num行开始显示。

● 使用示例:

        $ more file
        $ more +10 file

提示:

1.系统还提供了一个less命令,用于双向显示分屏显示文本文件内容。

2.less的功能比more丰富的多,可以使用如下命令查看其内置功能

        $ less --help

head命令

● 功能说明:显示文本文件的头部的若干行。

● 命令格式:head [参数] [<文件> …]

● 常用参数:

➢ -n : 显示前n行,不指定此参数显示前10行。

● 使用示例:

        $ head file
        $ head -5 file

tail命令

● 功能说明:显示文本文件的尾部的若干行。

● 命令格式:tail [参数] [<文件> …]

● 常用参数:

➢ -n : 显示后n行,不指定此参数显示后10行。

➢ +n : 从第n行显示到文件尾。

➢ -F : 用于跟踪显示不断增长的文件结尾内容(通常用于显示日志文件)。

● 使用示例:

        $ tail file
        $ tail -5 file
        $ tail +5 file
        $ tail -F /var/log/messages

cut命令

● 功能说明:纵向切割出文本指定的部分并写到标准输出。

● 命令格式:cut [参数] [<文件> …]

● 常用参数:

➢ -b<LIST> : 只列出<LIST>指定的字节。

➢ -c<LIST> : 只列出<LIST>指定的字符。

➢ -f<LIST> : 只列出<LIST>指定的字段;并打印所有不包含分界符的行,除非 -s选项被指定。

➢ -s : 不打印没有包含分界符的行。

➢ -d<DELIM> : DELIM是分界符,使用指定<DELIM>代替制表符作为区域分界。

➢ --complement : 补足选中的字节、字符或字段的占位。

➢ --output-delimiter=<STRING> : 使用指定<STRING>作为输出分界符默认时采用输入的分界符。

提示:LIST的语法

选用-b、-c或-f中一个或若干个选项时,每个<LIST>都由一个范围域或是由逗号分隔开的多个范围域组成。被选中的输入会按照与读入时相同的次序写到屏幕,每个输入只会被输出一次。每个范围域可以是以下中的任何一种:

● N : 第N个字节、字符或字段,从1开始计数。

● N-: 从第N个字节、字符或字段,直到行尾。

● N-M : 从第N个到第M个已包含的字节、字符或字段。

● -M : 从第一个到第M个字节、字符或字段。

● 使用示例:

        $ cut -b-10 file
        $ cut -c5-file
        $ cut -c5-10,15-20 file
        $ cut -f1,3,5 file
        $ cut -f2-4 file
        $ cut -f2-4 -d' ' file
        $ cut -f1,2-4,6 -d' ' -s file

paste命令

● 功能说明:纵向合并多个文本并写到标准输出。

● 命令格式:paste [参数] [<文件> …]

● 常用参数:

➢ -d<DELIM> : DELIM是分界符,使用指定<DELIM>代替制表符作为区域分界。

➢ -s : 不使用平行的行目输出模式,而是每个文件占用一行。

● 使用示例:

        $ paste file1 file2
        $ paste -s file1 file2
        $ paste -d' ' file1 file2

sort命令

● 功能说明:以行为单位对文件进行排序。

● 命令格式:sort [参数] [<文件> …]

● 常用参数:

➢ -b : 忽略前导的空格。

➢ -d : 只考虑空格、字母和数字。

➢ -f : 忽略字母的大小写。

➢ -i : 只考虑可打印字符。

➢ -M : 排序月份,(未知词)<“JAN”< … <“DEC”。

➢ -n : 根据字符串的数值进行排序。

➢ -r : 逆向排序。

➢ -u : 对相同的行只输出一行。

➢ +n : n为数字,对指定的列进行排序,+0表示第1列,以空格或制表符作为列的间隔符。

● 使用示例:

        $ sort file
        $ sort -bd file
        $ sort -bn file
        $ sort -r file
        $ sort -u file
        $ sort +5 file
        $ sort +5 -rb file
        $ sort file1 file2
        $ sort -br file1 file2

警告:1.本地环境变量会影响排序结果。

2.如果希望以字节的自然值获得最传统的排序结果,请设定LC_ALL=C。

uniq命令

● 功能说明:删除文本文件中相邻的重复的行并写到标准输出。

● 命令格式:uniq [参数] [<输入文件> [<输出文件>]]

● 常用参数:

➢ -c : 在每行前加上表示相应行目出现次数的前缀编号。

➢ -d : 只显示重复的行。

➢ -i : 忽略大小写差异。

➢ -u : 只显示出现一次的行。

➢ -s<N> : <N>为数字,对各行前<N>个字符不作比较。

➢ -w<N> : <N>为数字,对各行第<N>个字符以后的内容不作比较。

● 使用示例:

        $ uniq file
        $ uniq -i file
        $ uniq -cd file
        $ uniq -u file

wc命令

● 功能说明:统计指定文本文件的行数、字数、字符数。

● 命令格式:wc [参数] [<文件> …]

● 常用参数:

➢ -c : 统计输出字节数。

➢ -l : 统计输出行数。

➢ -L : 统计输出最长一行的长度。

➢ -w : 统计输出单词数。

● 使用示例:

        $ wc file
        $ wc -l file
        $ wc -w file
        $ wc -c file
        $ wc -L file

expand命令

● 功能说明:将文件中的制表符转换为空格,写到标准输出。

● 命令格式:expand [参数] [<文件> …]

● 常用参数:

➢ -i : 不转换非空格后的制表符。

➢ -t<N> : 设定每个制表符为指定<N>的宽度,而不是默认的8。

● 使用示例:

        $ expand file
        $ expand -t4 file

unexpand命令

● 功能说明:将文件中的空格转换为制表符,写到标准输出。

● 命令格式:unexpand [参数] [<文件> …]

● 常用参数:

➢ -a : 转换所有空格字符而不仅仅是字母首部的空格。

➢ --first-only : 只转换首部的空格字符序列(覆盖-a选项)。

➢ -t<N> : 设定每个制表符为指定<N>的宽度,而不是默认的8(激活-a选项)。

● 使用示例:

        $ unexpand file
        $ unexpand -t4 file

iconv命令

● 功能说明:将文件从一种编码转换成另一种编码。

● 命令格式:iconv [参数] <输入文件>

● 常用参数:

➢ -f <encoding> : 指定原始文本编码。

➢ -t <encoding> : 指定要转换的编码。

➢ -l : 列出所有已知编码字符集。

➢ -c : 忽略输出中的无效字符。

➢ -o <output file> : 指定输出文件,而不是在标准输出上显示。

● 使用示例:

        $ iconv -l
        $ iconv -f ISO-8859-1 -t UTF-8 -o outputfile inputfile
        $ iconv -f GB2312 -t UTF-8 -o outputfile inputfile
        $ iconv -f GBK -t UTF-8 -o outputfile inputfile
        $ iconv -f BIG5 -t UTF-8 -o outputfile inputfile
        $ iconv -f UTF-8 -t GB2312 -o outputfile inputfile

dos2unix命令

● 功能说明:将DOS格式的文本文件转换成UNIX格式的文本文件。

● 命令格式:dos2unix [参数] <文件> [<输出文件>]

● 常用参数:

➢ -k : 不改变文件的时间戳。

➢ -n : 新文件模式,即不改变原文件将转换结果保存到指定的输出文件。

● 使用示例:

        $ dos2unix dosfile
        $ dos2unix -n dosfile linuxfile
        $ dos2unix -k *
        $ dos2unix -k -n dosfile linuxfile

提示:系统还提供了一个unix2dos命令,用于将UNIX格式的文本文件转换成DOS格式的文本文件。使用方法与dos2unix命令一样。