当前位置: 首页 > 科技观察

一些命令行技巧:wc、sort、sed和tr

时间:2023-03-14 20:58:23 科技观察

Linux发行版很棒,它们有一些用户可能不知道的技巧。让我们来看看一些命令行实用程序,当您更喜欢终端而不是GUI时,它们可能会派上用场。我们都知道在一个系统上使用终端效率更高。当您编辑和排版文本文件时,终端会让您真正感受到生活是多么轻松。本文将向您介绍wc、sort、tr和sed命令。1.wcwc是一个实用程序,全称是“wordcount”。顾名思义,它可以用来统计任何文件的行数、字数和字节数。让我们看看它是如何工作的:$wcfilenamelineswordscharactersfilename输出文件的行数、单词数、字符数和文件名。要获得特定的输出,我们必须使用选项:-c打印总字节数-l打印行数-w打印总字数-m打印总字符数wc示例让我们看看它是如何工作的.Let'sstartwithatextfilelormipsm.txt.首先,我们通过cat查看文件内容,然后使用wc:$catloremipsm.txtLinuxisthebest-knownandmost-usedopensourceoperatingsystem.Asanoperatingsystem,Linuxissoftwarethatsitsunderneathalloftheothersoftwareonacomputer,receivingrequestsfromthoseprogramsandreplayingtheserequeststothecomputer'shardware.$wcloremipsm.txt341268loremipsm.txt假设我只想查看文件的字节数:$wc-cloremipsm.txt268loremipsm.txt查看文件的行数:$wc-lloremipsm.txt3loremipsm.txt查看文件的字数:$wc-wloremipsm.txt41loremipsm.txt现在只检查文件中的字符数:$wc-mloremipsm.txt268loremipsm.txt2。sortsort命令是最有用的工具之一。它对文件的数据进行排序。可以按字符或数字升序或降序排列。它还可用于对文件中的行进行排序和随机化。使用排序非常简单。我们需要做的就是提供一个文件名:$sortfilename默认按字母顺序对数据进行排序。需要注意的是,sort命令只是对数据进行排序和显示。它不会覆盖文件。使用sort命令的一些有用选项:-r以相反顺序对文件中的行进行排序-R将文件中的行打乱为随机顺序-o将输出保存到另一个文件-k按特定列排序-t使用指定分隔符而不是空格-n按值对数据进行排序排序示例让我们看几个简单的排序示例。我们有一个list.txt文件,其中包含以逗号分隔的名称和值。首先让我们打印出文件内容并简单排序:$catlist.txtCieranWilks,9AdelinaRowland,4HaydenMcfarlnd,1AnanyaLamb,5ShyamHead,2LaurynFuents,8KristianFelix,10RudenDyer,3GreysonMeyers,6LutherCooke,7$sortlist.txtAdelinaRowland,4AnanyaLamb,5CieranWilks,9GreysonMeyers,6HaydenMcfarlnd,1KristianFelix,10LaurynFuents,8LutherCooke,7RudenDyer,3ShyamHead,2Nowsortthedatainreverseorder:$sort-rlist.txtShyamHead,2RudenDyer,3LutherCooke,7LaurynFuents,8KristianFelix,10HaydenMcfarlnd,1GreysonMeyers,6CieranWilks,9AnanyaRowlands,4Letusscramblethedata:$sort-rlist.txt-Rlist.txtCieranWilks,9GreysonMeyers,6AdelinaRowland,4KristianFelix,10LutherCooke,7RudenDyer,3LaurynFuents,8HaydenMcfarlnd,1AnanyaLamb,5ShyamHead,2Lookalittlemorecomplicated.这次我们按第二个字段对数据进行排序,即值,并使用-o选项将输出保存到另一个文件:$sort-n-k2-t','-osorted_list.txtlist.txt$lssorted_list.txtlist.txt$catsorted_list.txtHaydenMcfarlnd,1ShyamHead,2RudenDyer,3AdelinaRowland,4AnanyaLamb,5GreysonMeyers,6LutherCooke,7LaurynFuents,8CieranWilks,9KristianFelix,10这里我们使用-n选项按照数字顺序排序,-k选项指定要排序的字段sorted(在本例中为第2个字段),-t选项指定分隔符或字段分隔符(逗号),-o选项将输出保存到sorted_list.txt文件。3.sedsed是一个流编辑器,用于过滤和转换输出中的文本。这意味着我们不需要修改原始文件,只需要修改输出。如果需要,我们可以将更改保存到新文件中。sed提供了许多有用的选项来过滤和编辑数据。sed的语法格式如下:$sed[OPTION]'PATTERN'filenamesed常用选项:-n取消默认输出p打印指定数据d删除指定行q退出sed脚本sed实例看看sed是怎么工作的.我们从数据文件开始,其中包含数字、姓名、年龄和操作系统字段。如果行出现在特定的行范围内,该行将打印2次:$catdata1VickyGrant20linux2NoraBurton19Mac3WillisCastillo21Windows4GilbertoMack30Windows5AubreyHayes17windows6AllanSnyder21mac7FreddieDean25linux8RalphMartin19linux9MindyHoward20Mac$sed'3,7p'data1VickyGrant20linux2NoraBurton19Mac3WillisCastillo21Windows3WillisCastillo21Windows4GilbertoMack30Windows4GilbertoMack30Windows5AubreyHayes17windows5AubreyHayes17windows6AllanSnyder21mac6AllanSnyder21mac7FreddieDean25linux7FreddieDean25linux8RalphMartin19linux9MindyHoward20Mac这里的操作用单引号括起来,表示第3行和第7行,并且使用了p打印出Datathatmatchesthematchingrules.Thedefaultbehaviorofsedistoprinteachlineafterparsing.Thismeansthatlines3through7areprintedtwicebecauseoftheuseofp.Howtoprintspecificlinesinafile?Usethe-noptiontoeliminatenon-matchinglinesintheoutput:$sed-n'3,7p'data3WillisCastillo21Windows4GilbertoMack30Windows5AubreyHayes17windows6AllanSnyder21mac7FreddieDean25linuxuse'-n'andonlylines3to7willbeprinted.Omitspecificlinesinthefile.使用d从输出中删除行:$sed'3d'data1VickyGrant20linux2NoraBurton19Mac4GilbertoMack30Windows5AubreyHayes17windows6AllanSnyder21mac7FreddieDean25linux8RalphMartin19linux9MindyHoward20Mac$sed'5,9d'data1VickyGrant20linux2NoraBurton19Mac3WillisCastillo21Windows4GilbertoMack30Windows从文件中搜索特定的关键字:$sed-n'/linux/p'data7FreddieDean25linux8RalphMartin19linux$sed-n'/linux/Ip'data1VickyGrant20Linux7FreddieDean25linux8RalphMartin19linux在这些示例中,我们在//中使用正则表达式。如果文件中有相似的词,但大小写不一致,可以用I使搜索不区分大小写。回想一下-n从输出中删除不匹配的行。替换文件中的单词:$sed's/linux/linus/'data1VickyGrant20Linux2NoraBurton19Mac3WillisCastillo21Windows4GilbertoMack30Windows5AubreyHayes17windows6AllanSnyder21mac7FreddieDean25linus8RalphMartin19linus9MindyHoward20Mac这里的///表示是正则表达式。两者之间/是定位词和需要替换的新词。4.trtr命令可用于转换或删除字符。它可以将小写字母转换为大写字母,将大写字母转换为小写字母,可以消除重复字符,还可以去除特定字符。tr的奇怪之处在于它不像wc、sort或sed那样接受文件作为输入。我们使用|(管道字符)为tr命令提供输入。$catfilename|tr[OPTION]tr命令使用的一些选项:-d删除第一组给定输入中的指定字符而不进行转换-s用单个tr替换重复的字符示例现在让我们使用tr命令转换所有小写字符在信件文件中转为大写字符:$catletterLinuxistooeasytolearn,Andyoushouldtryittoo.$catletter|tr'a-z''A-Z'LINUXISTOOEASYTOLEARN,ANDYOUSHOULDTRYITTOO。这里a-z,A-Z表示我们要将a到z范围内的小写字符转换为大写字符。从文件中删除o字符:$catletter|tr-d'o'Linuxisteasytlearn,Andyushuldtryitt。从文件中压缩字符o意味着如果o在文件中重复出现,它将被删除,只打印一次:$catletter|tr-s'o'Linux很容易学习,您应该尝试一下。总结这是一个使用wc、sort、sed、tr命令的快速演示。这些命令可以方便快捷地操作终端上的文本文件。您可以使用man命令来了解有关这些命令的更多信息。