1 使用echo命令输出文本1.1 显示转义字符如果要使echo命令支持转义字符,还必须使用e选项。 在上面的代码中,第5行使用了退格符,该字符会使光标从当前位置向左后退一个字符,然后继续输出文本。因此,该字符会导致前面的一个字符被覆盖。第7行使用了\c字符,该字符会导致echo语句忽略hello后面的文本。第9行使用了换行符\n,该字符会使光标跳到下一行的开始位置。第11~13行使用制表符输出了一个简单的表格,该字符会使后面的内容在垂直方向上对齐。 该程序的执行结果如下: 1.2 显示命令执行结果1.3 echo命令执行结果的重定向简单地讲,重定向就是将Shell命令的标准输出重新定向到一个文件。在默认情况下,echo命令的标准输出设备为显示器。但是,在某些情况下,用户可能不需要将echo命令显示的信息输出到屏幕,而是需要将其保存到一个磁盘文件中,此时,用户就需要使用重定向。 重定向的操作符为>或者>>,在目标文件已经存在的情况下,前者会覆盖目标文件原有的内容,而后者则会将数据追加到原来文件的末尾。 2 文本的格式化输出2.1 使用UNIX制表符在Shell中,制表符通常使用转义字符\t表示,其中字母t表示Tab,即表格的英文单词Table的前3个字母。前面已经讲过,echo命令支持制表符的输出。但是为了使用转义字符,需要使用n选项。 关于for循环语句的使用方法,前面已经详细介绍过了。在本例中,使用双层for循环结构,依次以表格的形式输出两个循环中的循环变量的乘积。在第10行中,echo语句用来输出数据,最后附加了一个制表符,是为了纵向对齐每列。第13行的echo语句的作用是当内层循环每次结束之后,打印一个换行符。 该程序的执行结果如下: 2.2 使用fold命令格式化行顾名思义,fold命令的功能是将超过指定宽度的文本行进行折叠处理,使得超过指定宽度的字符转到下一行输出。fold命令的基本语法如下: 在上面的语法中,options表示选项,fold命令常用的选项有如下所列。
file参数用来指定要输出的文件名,可以是多个文件,文件名之间用空格隔开。 例:通过s选项使文本行在换行时保留单词的完整,同样指定文本行的宽度为90列,命令如下: 通常情况下,用户使用fold命令的目的仅仅是输出到屏幕或者打印机等设备上面。如果想要将格式化的结果保存下来,可以使用重定向操作符将输出重定向到磁盘文件。 2.3 使用fmt命令格式化段落与fold命令相比,fmt命令提供了更多的功能。fmt命令是Shell中的一个简单的文本格式化工具,其名称来自于格式化(format)的缩写。fmt命令的基本语法如下: 其中,width选项用来指定文本行的列数,默认为75列,即每行显示75个字符。option表示各种命令选项,常用的选项如下所列。
file参数为要格式化其内容的文件名,可以同时指定多个文件,文件名之间用空格隔开。如果指定文件名为,则fmt命令会从标准输入,即键盘读取文本。 例1:使用w选项来指定行的最大长度为80列,代码如下: 以上代码的执行结果如下: 例2:如果不想fmt命令将不足指定行长度的行合并,则可以使用s选项。代码如下: 以上代码的执行结果如下: 2.4 使用rev命令反转字符顺序rev命令的功能是用来反转文件中的文本行的字符顺序,其名称来自于reverse(反转)的前3个字母。rev命令的基本语法如下: 其中,file表示要处理的文件的文件名列表,如果是多个文件,则文件名之间用空格隔开。假设存在一个名称为demo3.txt的文本文件,其内容如下: 演示rev命令的使用方法,代码如下: 该例的执行结果如下: 2.5 使用pr命令格式化文本页pr命令是一个非常有用的工具,其功能主要是将文本文件的内容转换成适合打印的格式。pr命令的名称来自于print(打印)的前两个字母,其基本语法如下: 其中,option表示命令选项,常用的选项如下所列。
在使用column等选项时,一定要注意指定的不能超过页面的宽度。默认情况下,pr命令的分栏是垂直划分的,也就是说,文件的前面几行会作为第1栏的内容,接下来的几行会作为第2栏的内容,依此类推。但是用户可以使用a选项来改变这种显示的效果,使得水平划分栏。也就是说,文件的第1行作为第1栏的第1行,第2行作为第2栏的第1行,依此类推。当所有栏的第1行都输出之后,再重新回到第1栏输出第2行。 为了演示pr命令的使用方法,首先准备一个文件,其内容如下: 在上面的文件中,包含一个国家名称的列表。为了打印输出,用户需要使用pr命令来对该文件进行格式化处理。演示使用pr命令将该文件的内容进行格式化处理,代码如下: 其中,第5行将demo4.txt的内容分成4栏输出。页面宽度为默认值,即72个字符。 演示如何自定义页眉、文本水平分栏,以及使用换页符来代替换行符,代码如下: 除了以上常用选项之外,如果用户不想显示标题,则可以使用t选项,命令如下: 如果想要将格式化的结果保存到文件中,同样可以使用输出重定向操作符,如下所示。 3 使用sort命令对文本排序sort命令的基本用法在上面的语法中,option表示sort命令的选项,常用的选项如下所列。
file参数是要排序的文件列表,多个文件名之间用空格隔开。如果使用符号作为文件名,则从标准输入读取数据。 4 文本的统计为了统计文本,Shell提供了许多有用的工具来完成文本的统计,例如wc、cat及grep等。 4.1 输出含有行号的文本行在Shell中,有许多命令都可以输出行号,其中包括cat、grep及wc等。下面分别介绍如何使用这些命令输出行号。 cat命令提供了一个n选项,通过该选项,cat命令会在每一个文本行的前面添加一个行号,如下所示。 除了前面介绍的几个命令之外,Shell还提供了一个名称为nl的命令,用来为文本添加行号,其基本语法如下: nl命令的常用选项如下所列。
参数file表示要添加行号的文件的列表。 演示使用nl命令为文本添加行号的方法,代码如下: 4.2 统计行数在Shell程序中,用户可以使用grep及wc等命令来统计文本行的数量。下面分别介绍这两种统计文本行数的方法。 grep命令提供了一个名称为c的选项,用来统计符合筛选条件的文本行的行数。 wc命令是Shell中用来对文本进行各种统计的命令,其基本语法如下: 其中,wc命令常用的选项如下所列。
与其他命令一样,wc命令可以接受多个文件名作为参数,这些文件名之间用空格隔开。 如果想要统计某个文件的行数,可以使用以下命令: 如果直接使用wcl命令统计文本的行数,会在输出行数的同时还包括被统计的文件的文件名。而在Shell程序,用户通常需要的仅仅是行数,介绍一个小技巧,那就是去掉wcl命令中的文件名,只得到行数。 在上面代码的第5行,首先使用cat命令显示文件的内容,然后通过管道将结果输出给wc–l命令,并且将得到结果赋给变量lines。 该程序的执行结果如下: 除了直接统计文本的行数之外,wc命令还有许多其他的用法,在下面的例子中,我们通过find命令和wc命令,来统计查找到的文件数。 例:使用find结合wc命令来统计/etc目录下面以.conf为扩展名的文件的数量,代码如下: 在上面的代码中,第5行首先使用find命令查找/etc目录下面以.conf为扩展名的文件列表。我们知道,在find命令的输出结果中,每一行都是一个文件名。然后通过管道将这个列表输出到wc命令中,通常wc命令统计出搜索结果列表的行数。 该程序的执行结果如下: 4.3 统计单词数和字符数在许多语言中,例如英语,单词之间都是通过空格来隔开的。在wc命令中,也是通过空格来区分单词的。用户可以通过w选项来统计文本中的单词的数量。另外,通过m选项可以统计文本的字符数。 例:使用cat命令配合wc命令来取得文件中的单词的数量和字符数量,代码如下: 5 使用cut命令选取文本列cut命令及基本语法在上面的语法中,option表示选项,cut命令常用的选项如下所列。
file参数表示要处理的文件列表,多个文件名之间用空格分隔。 6 使用paste命令拼接文本列paste命令及其语法其中,paste命令常用的选项如下所列。
其中,s选项表示将各个文件依次连接在一起。也就是说,将后面一个文件的文本行追加在前面一个文件的内容的后面。因此,如果使用s选项,则生成的文件的列数与参与组合的文件的列数相同,但是行数等于参与组合的所有文件的行数之和。 file参数表示参与拼接的文件列表,文件名之间用空格隔开。如果省略文件名,则表示从标准输入接收文本数据。 7 使用join命令联接文本列join命令及其语法在上面的语法中,option表示join命令的相关选项,常用的选项如下所列。 -1 field:根据第1个文件的指定列进行联接。其中参数field用来指定第1个文件中用来联接的关键字列。 -2:field:根据第2个文件的指定列进行联接。其中参数field用来指定第2个文件中用来联接的关键字列。 -a filenum:指定是否输出不匹配的行。其中参数filenum可以取值为1或者2,分别代表参与联接的第1个文件和第2个文件。 -e string:使用参数string指定的字符串代替空列。 -i:在比较关键字时忽略大小写。 -o:自定义输出列。 -t:自定义列分隔符。 – v filenum:该选项的功能是输出filenum指定文件的所有的行。 在上面的选项中,其中a选项用来指定是否需要输出参与联接的两个文件中的不匹配的文本行,该选项可以取1或者2,当取值为1时,表示输出第1个文件中的所有的文本行,包括关键字不匹配的行;当取值为2时,表示输出第2个文件中的所有的文本行。该选项可以重复指定,例如想要同时输出两个文件中的所有的的行,可以指定-a1-a2。 8 使用tr命令替换文件内容tr命令及其语法在上面的语法中,option表示tr命令的选项,常用的选项如下所列。
参数set1和set2分别表示参与操作的两个字符集,其中set1用于查询,set2用于处理各种转换操作。也就是说,凡是在字符集set1中出现的字符,都将被替换为字符集set2中相应位置上的字符。 |
|
来自: lifebegins40s > 《linux》