ImageVerifierCode 换一换
格式:DOCX , 页数:52 ,大小:72.89KB ,
资源ID:3611111      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3611111.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Linux应用技巧.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Linux应用技巧.docx

1、Linux应用技巧Linux应用技巧1 用 uniq 除去重复行重复行通常不会造成问题,但是有时候它们的确会引起问题。此时,不必花上一个下午的时间来为它们编制过滤器,uniq 命令便是唾手可得的好工具。了解一下它是如何节省您的时间和精力的。进行排序之后,您会发现有些行是重复的。有时候该重复信息是不需要的,可以将它除去以节省磁盘空间。不必对文本行进行排序,但是您应当记住 uniq 在读取行时会对它们进行比较并将只除去两个或更多的连续行。下面的示例说明了它实际上是如何工作的:清单 1. 用 uniq 除去重复行$ cat happybirthday.txtHappy Birthday to You

2、!Happy Birthday to You!Happy Birthday Dear Tux!Happy Birthday to You!$ sort happybirthday.txt Happy Birthday Dear Tux!Happy Birthday to You!Happy Birthday to You!Happy Birthday to You!$ sort happybirthday.txt | uniqHappy Birthday Dear Tux!Happy Birthday to You!警告:请不要使用 uniq 或任何其它工具从包含财务或其它重要数据的文件中除去

3、重复行。在这种情况下,重复行几乎总是表示同一金额的另一个交易,将它除去会给会计部造成许多困难。千万别这么干!有关 uniq 的更多信息本系列文章介绍了文本实用程序,它对在手册页和信息页找到的信息作了补充。如果您打开新的终端窗口并输入 man uniq 或 info uniq,或者打开新的浏览器窗口并查看位于 gnu.org 的 uniq 手册页,那么就可以了解更多的相关信息。如果您希望您的工作轻松点,比如只显示唯一的或重复的行,那么该怎么办呢?您可以用 -u(唯一)和 -d(重复)选项来做到这一点,例如:清单 2. 使用 -u 和 -d 选项$ sort happybirthday.txt |

4、 uniq -uHappy Birthday Dear Tux!$ sort happybirthday.txt | uniq -dHappy Birthday to You!您还可以用 -c 选项从 uniq 中获取一些统计信息:清单 3. 使用 -c 选项$ sort happybirthday.txt | uniq -uc 1 Happy Birthday Dear Tux!$ sort happybirthday.txt | uniq -dc 3 Happy Birthday to You!就算 uniq 对完整的行进行比较,它仍然会很有用,但是那并非该命令的全部功能。特别方便的是:使

5、用 -f 选项,后面跟着要跳过的字段数,它能够跳过给定数目的字段。当您查看系统日志时这非常有用。通常,某些项要被复制许多次,这使得查看日志很难。使用简单的 uniq 无法完成任务,因为每一项都以不同的时间戳记开头。但是如果您告诉它跳过所有的时间字段,您的日志一下子就会变得更加便于管理。试一试 uniq -f 3 /var/log/messages,亲眼看看。还有另一个选项 -s,它的功能就像 -f 一样,但是跳过给定数目的字符。您可以一起使用 -f 和 -s。uniq 先跳过字段,再跳过字符。如果您只想使用一些预先设置的字符进行比较,那么该怎么办呢?试试看 -w 选项。有什么问题或意见吗?我非

6、常乐意收到您的来信 请发送邮件到 jacek。下一次,我们将研究 nl。到时候见!2 用 tr 过滤文件没有人曾说过 sed 很容易 它确实不容易!但通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。Jacek Artymiak 向您展示如何去做。您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr 所能够做的。 那么,为什么要使用 tr,而不使用 sed 呢?当然是为了使事情简单。例如,如果我们希望用字母“z”来替换出现的所有字母“a”,则可以用 tr a z,这条命令毫无

7、疑问比 sed -e s/a/z/g 简单,尤其在把它用到脚本中时,其中的引号转义很让人头痛。另外,在使用 tr 时,可以避免写那些让人讨厌的正则表达式。 使用 tr 很简单:使用前面一段中所给出的符号表示法,用一个字符去替换出现的所有另一个字符。当需要替换多个字符时,使用类似于这样的表示法:tr abc xyz,它表示用字母“x”去替换出现的所有字母“a”,用字母“y”去替换所有字母“b”,用字母“z”去替换所有字母“c”。这两组中所列出的字符的数目不必相等。 您也可以指定字符的范围。例如,tr a-z A-Z 将用对应的大写字母来替换所有的小写字母(例如,它将“no smoking”转换成

8、“NO SMOKING”)。当您在 vi 编辑器中想强调正在编辑的文本的某一部分时,使用这一特殊技巧非常方便。只要按一下 Escape 键,然后按 : 键,再输入 2,4!tr a-z A-Z,最后按一下 Return 键。现在,从第 2 行到第 4 行的字母就都转换成了大写字母。 关于 tr 的其它内容GNU 手册上提到,tr 在执行您所选择的操作时,通过将标准输入复制到标准输出,从而实现“转换、压缩和或删除字符”。在这篇技巧文章中,您将了解到这些选项;当然也可以通过了解 tr 的手册页或信息页,学习到更多关于 tr 的内容。 打开一个新的终端窗口,输入 man tr 或 info tr 或

9、者打开一个新的浏览器窗口,并链接到 gnu.org 上的 tr 手册页(关于这个链接,请参阅参考资料)。 另外,当有人给您发送了一个在 Mac OS 或 DOS/Windows 机器上创建的文本文件时,您会发现 tr 非常有用。如果没有将文件保存为使用 UNIX 换行符来表示行结束这种格式,则需要将这样的文件转换成本机 UNIX 格式,否则一些命令实用程序不会正确地处理这些文件。Mac OS 的行尾以回车字符结束,许多文本处理工具将这样的文件作为一行来处理。为了纠正这个问题,可以用下列技巧: Mac - UNIX:tr r n unixfile UNIX - Mac:tr n r macfil

10、e Microsoft DOS/Windows 约定,文本的每行以回车字符并后跟换行符结束。为了纠正这个问题,可以使用下列命令: DOS - UNIX:tr -d r unixfile UNIX - DOS:在这种情况下,需要用 awk,因为 tr 不能插入两个字符来替换一个字符。要使用的 awk 命令为 awk print $0r dosfile 另外,当您需要对文本文件做一些简单的整理工作(如用 tr -d t 除去制表符,用 tr -s 除去多余的空格,或者用 tr -d n 将分开的几行合成一行)时,会需要用 tr。同样,可以在 vi 内使用所有这些命令;只要记住:在 tr 命令前要加

11、上您希望处理的行范围和感叹号(!),如 1,$!tr -d t(美元符号表示最后一行)中所示。 3 用 cat 合并文件在我们有关 GNU 文本实用程序的连续系列中,Jacek Artymiak 对 cat 做了一下研究 cat 这个命令是 UNIX 爱好者所热爱的,也是厌恶 UNIX 的人所憎恶的。您常常需要将几个文件处理成一个文件并将这种处理的结果保存到一个单独的输出文件。cat(“concatenate”的缩写)命令在其输入上接受一个或多个文件并将它们作为一个单独的文件打印到它的输出。例如,cat chapter01 chapter02 chapter03 book 将三个 chapte

12、rXX 文件保存在一个单独的 book 文件中。 输入文件按照它们在 cat 命令后的排列顺序被打印,因此,要调换信息的顺序,就必须先调换输入文件的顺序。此外,当需要处理的文件数目对于您来说过大而无法手工输入这些文件的名称时,您可以使用通配符,如在 cat chapter* book 中使用的那样,记住,文件名将会按升序排列。当您突然发现 chapter13 被发送到输出中时会在 chapter2 之前,而会在 chapter02 之后时,这会引起很有意思的问题。 当 cat 的输出没有被重定向到一个文件或另一个命令的标准输出时,cat 表现出来的行为与多数命令行工具一样,即将其输出发送到控制

13、台。这意味着您可以使用 cat 来显示文件;例如,您可以使用 cat /etc/passwd 来显示系统密码文件的内容。为方便起见,您应该用 less 查看大文件,如在 less /etc/passwd 中那样(您可以通过输入 man less 学习更多关于 less 的知识)。尽管 cat 主要用于合并文件,您还可以将它用于输入的简单自动处理。例如,您可以使用一个单独的空白行来除去多行空白行(使用 -s 选项),这是一个在您将源代码公诸于世前进行清除工作的好办法。遗憾的是,cat 并没有用于一次清除所有空白行的选项。但这并不是什么大问题,因为您可以使用方便的 sed 命令将这些空白行除去:

14、清单 1. 使用 sed 与 cat 除去空白行 $ cat -s /etc/X11/XF86Config | sed /:space:*$/d.# Multiple FontPath entries are allowed (they are concatenated together)# By default, Red Hat 6.0 and later now use a font server independent of# the X server to render fonts. FontPath /usr/X11R6/lib/X11/fonts/TrueType FontPath

15、 unix/:7100EndSection.对于读取配置文件和 HTML 页面的源文件,特别是那些由脚本生成的插入了不必要新行的源文件,以及那些包含大型条件结构(其各个项之间已经用空行分开)的源文件来说,空白行紧缩是一个方便的技巧。 cat 的另外一个重要的功能是它可以对行进行编号。这种功能对于程序文档的编制以及法律和科学文档的编制很方便。打印在左边的行号使得参考文档的某一部分变得容易。这在编程、科学研究、业务报告或甚至是立法工作中都是非常重要的。对行进行编号功能有两个选项:-b 选项(只能对非空白行进行编号)和 -n 选项(可以对所有行进行编号): 清单 2. 对行进行编号 $ cat -b

16、 /etc/X11/XF86Config. 14 # Multiple FontPath entries are allowed (they are concatenated together) 15 # By default, Red Hat 6.0 and later now use a font server independent of 16 # the X server to render fonts. 17 FontPath /usr/X11R6/lib/X11/fonts/TrueType 18 FontPath unix/:7100 19 EndSection.$ cat -n

17、 /etc/X11/XF86Config. 20 # Multiple FontPath entries are allowed (they are concatenated together) 21 # By default, Red Hat 6.0 and later now use a font server independent of 22 # the X server to render fonts. 23 24 FontPath /usr/X11R6/lib/X11/fonts/TrueType 25 FontPath unix/:7100 26 27 EndSection.ca

18、t 还可以在您查看包含如制表符这样的非打印字符的文件时起帮助作用。您可以用以下选项来显示制表符: -T 将制表符显示为 I -v 显示非打印字符,除了换行符和制表符,它们使用各自效果相当的“控制序列”。例如,当您处理一个在 Windows 系统中生成的文件时,这个文件将使用 Control-M(M)来标记行的结束。对于代码大于 127 的字符,它们的前面将会被加上 M-(表示“meta”),这与其它系统中在字符前面加上 Alt- 相当。 -E 在每一行的结束处添加美元符($)。 清单 3. 显示非打印字符 $ cat -t /etc/X11/XF86Config.# Multiple Font

19、Path entries are allowed (they are concatenated together)# By default, Red Hat 6.0 and later now use a font server independent of# the X server to render fonts.IFontPathI/usr/X11R6/lib/X11/fonts/TrueTypeIFontPathIunix/:7100EndSection.$ cat -E /etc/X11/XF86Config.# Multiple FontPath entries are allow

20、ed (they are concatenated together)$# By default, Red Hat 6.0 and later now use a font server independent of$# the X server to render fonts.$ FontPath /usr/X11R6/lib/X11/fonts/TrueType$ FontPath unix/:7100$EndSection$.$ cat -v /etc/X11/XF86Config.M-|M-8XPOM-XO M-MM-OM-M-kM-8*M-H$M-M-9|A(M-)M-yM-|M-s

21、M-*M-hWAjM-|M-sM-%1M-M-9BM-sM-+fM-A= F M-9HM-sM-$M-GE(l!M-M-?IM-A5DPM-M-X1M-H%DtyM-G4 使用 head 和 tail 以块方式读取文本流Jacek 在本技巧文章中介绍了 head 和 tail 命令,它们对于以块方式处理静态和动态文件中的数据非常有用。假定您想只处理文件的一部分,譬如头几行或后几行,那您该怎么做呢?请使用 head(它将头 10 行发送至标准输出)或 tail(它将后 10 行发送至标准输出)。您可以通过使用 -n 选项改变这些命令发送至其标准输出的行数(当然,输出结果将随 XF86Config

22、 文件的内容而不同):清单 1. 将 XF86Config 中选定行数的内容发送至标准输出 $ head -n 4 /etc/X11/XF86Config# File generated by anaconda.# *# Refer to the XF86Config(4/5) man page for details about the format of# this file.$ tail -n 4 /etc/X11/XF86ConfigModes 1600x1200ViewPort 0 0EndSubsectionEndSection如果您想让 head 或 tail 以字节而不是以行为

23、单位,那该怎么办呢?您可以用 -c 选项代替 -n 选项。因此,要显示前 200 个字符,请使用 head -c 200 file,或者使用 tail -c 200 file 来显示后 200 个字符。如果数字后面跟有 b(表示块(block),那么这个数字将被乘以 512。类似地,跟有 k(表示千字节(kilobyte)表示用 1024 去乘给定的数字,而跟有 m(表示兆字节(megabyte)表示用 1048576 字节去乘给定的数字。请记住,head file1 file2 file3 和 cat file1 file2 file3 | head 之间有重大差别。前者将打印每个文件指定行

24、数的内容,不同文件的内容之间用头信息隔开,头信息以 = 后跟文件名开头。后者将打印由 cat 命令后所列文件组成的输入流中指定行数的内容,但将把输入流作为单个文件对待。可以使用 -q(表示静默(quiet)选项关闭文件名头信息。与 -q 相反的是 -v(表示详列(verbose)。假如您要处理的文件在处理期间一直在发生变化(比如,当您让 head 或 tail 读取来自正在被另一个命令写入的文件的数据时,就是这种情况),请使用 -f 选项让 tail 持续读取来自指定文件的数据并将这些数据发送至 tail 自己的标准输出中。通过管道发送数据时该选项会被忽略。因此,cat file | tail

25、 -f 将不会得到所期望的结果,但 tail -f file 则可以。(如果 tail 正在读取的文件不止一个,那么各行内容之间将用标准头信息隔开,以指明它们来自哪个文件,标准头信息以 = 开头。)这个选项用于监视系统日志再合适不过,譬如,在单独的终端窗口(或单独的控制台)中执行的 tail -f /var/log/access.log 将持续打印每次点击后新添加的 Apache 访问日志条目,一直到您用 Ctrl-C 停止它为止。通过组合使用 head 和 tail,可以从文件的中间部分读取给定长度的一块数据!下面说明如何做到:假定您想从文件开头算起第 1000 字节处开始读取一块 789

26、字节的数据。可以使用 cat file | head -c 1788 | tail -c 789 来解决这一问题。使用 tac 命令逆序排序文件如果您想对文件中的各行进行逆序排序,该怎么做呢?这就要用到 tac 命令。(请注意,tac 由 cat 逆序拼写而成。)该命令对所列出的文件中的各行或各段进行逆序排序。该命令不能逆序排序各文件的顺序 这个任务您得自己做,以逆向顺序在 tac 命令后列出各文件即可。作为说明 tac 的工作原理的示例,请在您的主目录中对一些文件使用 ls -l | tail 和 ls -l | tail | tac,比较其结果。5 用 sort 和 tsort 对文件进行

27、排序通过使用 sort 和 tsort,而不是采取使用 Perl 或 Awk 的较复杂的解决方案,可以节省时间,同时还能避免令人头疼的问题。Jacek Artymiak 将向您说明如何做到这一点。尽管可以用 Perl 或 Awk 编写高级排序应用程序,但并非总是有此必要,而且这样的工作也常常令人感到头疼。使用 sort 命令,您同样可以实现您所需的大多数功能,而且更容易,它可以对多个文件中的行进行排序、合并文件甚至可以查看是否有必要对它们进行排序。您可以指定排序键(用于比较的行中的一部分),也可不指定,后一种情况下 sort 就比较所有行。因此,如果您想对密码文件进行排序,就可以使用下列命令(

28、请注意,您不能将输出直接发送到输入文件,因为这会破坏输入文件。这就是为何您需要将它发送到临时文件中,然后将该文件重命名为 /etc/passwd 的原因,如下所示)。清单 1. 简单排序 $ su - # sort /etc/passwd /etc/passwd-new# mv /etc/passwd-new /etc/passwd 有关 sort 和 tsort 的更多信息通过打开有关排序操作的 GNU 手册页来学习手册页中的内容,或者通过在命令行中输入 man sort 或 man tsort 在新的终端窗口的手册页或信息页中查看这些选项。如果您想倒转排序的次序,则应当使用 -r 选项。您

29、还可以用 -u 选项来禁止打印相同的行。sort 的一个非常实用的特性是它用字段键进行排序的能力。字段是一个文本字符串,通过某个字符与其它字段分隔开。例如,/etc/passwd 中的字段是用冒号(:)分隔的。因此,如果愿意的话,您可以按照用户标识、组标识、注释字段、主目录或 shell 对 /etc/passwd 进行排序。要做到这一点,请使用 -t 选项,其后跟着用作分隔符的字符,接着是用作排序键的字段编号,再跟作为键的最后一个字段的编号;例如,sort -t : -k 5,5 /etc/passwd 按照注释字段对密码文件进行排序,该字段中存储了完整的用户名(如“John Smith”)

30、。而 sort -t : -k 3,4 /etc/passwd 同时使用用户标识和组标识对同一个文件进行排序。如果您省略了第二个数字,那么 sort 会假定键是从给定的字段开始,一直到每一行的末尾。动手试一试,并观察其中的区别(当数字排序看上去有错时,请添加 -g 选项)。还要注意的是,空白过渡是缺省的分隔符,因此,如果字段已经用空白字符分隔了,那么您可以省略分隔符,只使用 -t(另注:字段的编号是从 1 开始的)。为了更好地进行控制,您可以使用键和偏移量。偏移量是用点与键相分隔的,比如在 -k 1.3,5.7 中,表示排序键应当从第 1 个字段的第 3 个字符开始,到第 5 个字段的第 7 个字符结束(偏移量也是从 1 开始编号的)。何时会用得着偏移量呢?嗯,我时常用它来对 Apache 日志进行排序;键和偏移量表示法让我跳过了日期字段。另一个要关注的选项是 -b,它告知 sort 忽略空白字符(空格、跳格等等)并将行中的第一个非空白字符当做是排序键的开始。还有,如果您使用该选项,那么将从第一个非空白字符开始计算偏移量(当字段分隔符不是空白字符,且字段可能包含以空白字符开头的字符串时,这非常有用)。可以用下面这些选项来

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1