Linux系统基础学习——5.文本管理(1)

摘要:file、cat、more、less、head、tail、touch、重定向、cut、sort、uniq、paste、join、tr、wc

       在<Linux系统简介>篇中,我们已经知道了Linux中一切皆为文件,配置文件保存为纯文本格式,因此,用户需要熟悉掌握处理文件相关的操作。本篇及接下来几次文章,我们将逐步学习Linux文件管理相关的知识,相信,学完文件管理这部分,我们将会更加熟练、理解Linux操作系统。

      今天,我们要学习如何操作文件,包括文件的访问、创建、移动、复制及删除,和对文件内容进行编辑。

一、文件查看

      在学习查看文件内容前我们先学一个命令:file命令(查看待访问对象是文件还是目录)。file命令跟前面我们学到的ls –F命令效果一致,只不过file后必须接待查看对象名。

[xiaosheng@localhost ~]$ file xiao.txt
xiao.txt:ASCII text

      好啦!正式开始学习如何查看文件内容吧!在Linux系统中,用户可以通过cat、more、less、head、tail等命令查看文件内容(这几个是专用于查看文件内容的命令,不能对文件内容进行编辑)

(1)cat命令将一个或多个文件内容显示在屏幕上。cat命令显示文件内容为一次性显示完,因此不适合用于显示多于一屏以上内容的文件。

cat使用格式及常用选项:

cat [选项]… 文件…
-n 显示时对每行进行编号,空行也编号
-b 显示时对每行进行编号,空行除外
-s 将两个或更多个相邻的空行合并成一个空行
-E 每行尾部显示$符号
-A 显示所有特殊符号(Linux下Tab键用^I表示)

(2)more命令分屏显示文件内容,在未到达文件尾部时可向上翻屏,适合查看大文件;使用方式同man命令,q键退出,这里不再赘述。

(3)less命令分屏显示文件内容,可向前向后翻页,功能比more命令更强大;使用方式同man命令,q键退出(shift+g键切换到文件末尾、g键切换至文件首部)

(4)head命令查看文件首部指定行(默认为前10行)

head使用格式如下:

head –n num filename         #num为行数
或者用head –num filename    #head命令后直接接 –行数

(5)tail命令显示文件末尾指定行(默认显示文件尾部10行)

tail用法同head,不过可用+n或-n,+n表示从文件的第n行到末尾,-n表示末尾n行。

tail有一个非常重要的选项-f(或--follow):查看文件尾部时不退出,等待显示后续追加至此文件的新内容,适合监视日志系统的文件(/var/log/messages)

二、文件创建

      Linux系统中,用户可通过多种方式创建文件,主要包括通过touch命令、文本编辑器(nano、vi(m))及输出重定向三种方式创建文件。下面我们来一一学习这几种方式:

(1)touch命令touch命令主要功能为改变文件的时间戳,但可用于创建文件(touch后接一个或多个不存在的文件,即可创建新文件)。

touch使用格式及常用选项:

touch [选项]… 文件…
-c     #不创建新文件,只改变时间戳
-a     #修改访问时间
-m    #修改修改时间
-t     #指定时间,而不用默认的当前时间
[补充一个命令:stat命令,显示一个文件或文件系统的状态信息]

(2)使用文本编辑器nano或vi(m)

      nano命令使用格式:nano filename #将创建并打开filename,可编辑后保存文件。

vi或vim命令使用格式同nano,vi(m)在Linux中是一个非常重要且强大的文本编辑工具,其具体用法我们将在随后的vim专讲中详细学习。

(3)使用输出重定向

      在使用重定向(重新定义输入输出方向)前,我们先得知道Linux系统中标准输入和标准输出,前者指从键盘输入信息,后者指从显示器打印信息。Linux中输出信息有两种,标准的命令输出和标准的命令错误输出。

Linux中,用0,1,2三个文件描述符表示这三种输入输出情况:

0:默认输入设备、标准输入,文件描述缩写为stdin

1:默认输出设备、标准输出,文件描述缩写为stdout

2:标准错误输出,文件描述缩写为stderr

重定向输入输出即改变输入输出的方向(来源去向),Linux中用以下符号代表重定向:

>覆盖输出     >> 追加输出   2> 重定向错误输出  2>> 追加错误输出

&> 重定向标准输出或错误输出到同一个文件中

< 输入重定向     << 此处生成文档(<<后要接文档结束符,可自定义,建议使用EOF)

例$ cat >> /home/xiaosheng/x1.txt<< EOF    #从键盘输入信息,EOF结束文档,结果写入/home/xiaosheng/x1.txt

重定向一个不存在的文件将会生成一个与此同名的文件。

三、文件移动、复制、删除

      文件移动、复制和删除命令分别为mv、cp、rm,用法与操作目录一致(目录需使用递归操作,文件操作不用),使用格式请查看目录管理篇 https://blog.csdn.net/hzau_xiaosheng/article/details/80303424 

四、文本处理

     在windows系统中我们可以对文本进行剪切、排序、统计等,Linux下用户同样可以进行这些操作,并且操作命令功能更强大。

(1)cut命令从一个文件中剪切掉正文字段(fields,也就是列)并将它们送到标准输出(也可重定向输出)

cut使用格式和常用选项:

cut [选项]… [文件名]…
-c :要剪切的字符
-d :指定字段的分隔符(默认为Tab)
-f :指定要显示的字段  #-f1,3 表示显示第1和3字段(列)-f1-3 表示显示第1至3字段(列)

(2)sort命令对正文数据进行排序并将结果送到标准输出,原始文件中的数据不会发生任何变化

sort使用格式和常用选项:

sort [选项]…[文件名]…
-n 按数值大小排序、升序
-r 反向排序、降序
-t 指定字段分隔符
-k 指定以哪个字段为准排序
-u 相同内容只显示一个(排序后相同的行只显示一次;注:相邻且内容相同的行才会只显示一个,不相邻行内容相同会显示)
-f 排序时忽略字符大小写

(3)uniq命令报告或省略重复行,可与sort一起用

uniq使用格式和常用选项:

uniq [选项]… 文件
-c 显示文件中行重复次数
-d 只显示重复的行
-i 忽略字符的大小写
-u 只显示唯一的行,即只出现一次的行

(4)paste命令将每一个文件中的每一行用Tab字符分割开并顺序地写到标准输出(即横排合并操作)

paste使用格式和主要选项:

paste [选项]… [文件名]…
-d 指定输出分隔符

(5)join命令依据两个文件里共有的某一列,将相应的行拼接成一行(两文件中共有行顺序必须一致)

join使用格式和常用选项:

join [选项] 文件1 文件2
-a filenum 除了显示匹配好的行另外将指定序号(1或2)文件里未匹配行也显示出来
-e string 将需要显示但文件中不存在的域用string代替
-i 忽略大小写
-j field 等同于-1 filed -2 field,-j指定一个域作为匹配字段(列)
-t char 以指定字符作为输入输出分隔符
-v filenum 只显示filenum中没匹配的行
-1 field 以文件1中field字段进行匹配
-2 field 以文件2中field字段进行匹配

(6)wc命令统计文件中行数、单词数和字符(空格也是字符)数

wc使用格式和主要选项:

wc [选项]… 文件
-l 只显示行数
-w 只显示单词数
-m或c 只显示字符数
-L 最长行包含多少字符(不包括行结束符)

(7)tr命令转换或删除字符(tr后不可直接接文件,需要用输入重定向)

tr [选项]…set1 set2   (将set1转换成set2)

例 tr ‘A-Z’ ‘a-z’ < a.txt > b.txt  #将a.txt文件中大写字母转换成小写并输出到b.txt

(8)grep、sed、awk

grep、sed和awk被称为文本处理三剑客,可想是非常的重要的命令,我们将在随后篇章中一一单独学习。

参考资料:马哥Linux、Linux入门到精通








猜你喜欢

转载自blog.csdn.net/HZAU_xiaosheng/article/details/80657896