Linux下常用的过滤操作有哪些
这篇文章将为大家详细讲解有关Linux下常用的过滤操作有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
过滤器是一个程序,它从标准输入读取数据,在数据上执行操作,然后把结果写到标准输出。因此,它可以用来以强大的方式处理信息,例如重新结构化输出以生成有用的报告,修改文件里面的文本,以及其他很多系统管理任务。
下面是 Linux 上的一些有用的文件或者文本过滤器。
1、 awk 命令awk 是一个卓越的模式扫描和处理语言,它可被用于在 Linux 下构造有用的过滤器。你可以通过阅读我们的 awk 系列 1 到 13 部分 来开始使用它。
另外,也可以通过阅读 awk 的 man 手册来获取更多的信息和使用选项。
$manawk2、 sed 命令
sed 是一款过滤和转换文本的强大的流编辑器。我们已经写了两篇关于 sed 的有用的文章,你可以通过这儿来了解:
sed 的 man 手册已经添加控制选项和说明:
$mansed3、 grep、 egrep、 fgrep、 rgrep 命令行
这些过滤器输出匹配指定模式的行。它们从一个文件或者标准输入读取行,并且输出所有匹配的行,默认输出到标准输出。
注意:主程序是 grep,这些变体与使用特定的选项的 grep 相同,如下所示(为了向后兼容性,它们依旧在使用):
$egrep=grep-E$fgrep=grep-F$rgrep=grep-r
下面是一些基本的 grep 命令:
tecmint@TecMint~$grep"aaronkilik"/etc/passwdaaronkilik:x:1001:1001::/home/aaronkilik:tecmint@TecMint~$cat/etc/passwd|grep"aronkilik"aaronkilik:x:1001:1001::/home/aaronkilik:
在 Linux 下的 grep、 egrep 和 fgrep 的差异?中,你可以了解更多。
4、 head 命令head 用于显示文件前面的部分,默认情况下它输出前 10 行。你可以使用 -n 标志来指定显示的行数:
tecmint@TecMint~$head/var/log/auth.logJan210:45:01TecMintCRON[3383]:pam_unix(cron:session):sessionopenedforuserrootby(uid=0)Jan210:45:01TecMintCRON[3383]:pam_unix(cron:session):sessionclosedforuserrootJan210:51:34TecMintsudo:tecmint:TTY=unknown;PWD=/home/tecmint;USER=root;COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.pyJan210:51:34TecMintsudo:pam_unix(sudo:session):sessionopenedforuserrootby(uid=0)Jan210:51:39TecMintsudo:pam_unix(sudo:session):sessionclosedforuserrootJan210:55:01TecMintCRON[4099]:pam_unix(cron:session):sessionopenedforuserrootby(uid=0)Jan210:55:01TecMintCRON[4099]:pam_unix(cron:session):sessionclosedforuserrootJan211:05:01TecMintCRON[4138]:pam_unix(cron:session):sessionopenedforuserrootby(uid=0)Jan211:05:01TecMintCRON[4138]:pam_unix(cron:session):sessionclosedforuserrootJan211:09:01TecMintCRON[4146]:pam_unix(cron:session):sessionopenedforuserrootby(uid=0)tecmint@TecMint~$head-n5/var/log/auth.logJan210:45:01TecMintCRON[3383]:pam_unix(cron:session):sessionopenedforuserrootby(uid=0)Jan210:45:01TecMintCRON[3383]:pam_unix(cron:session):sessionclosedforuserrootJan210:51:34TecMintsudo:tecmint:TTY=unknown;PWD=/home/tecmint;USER=root;COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.pyJan210:51:34TecMintsudo:pam_unix(sudo:session):sessionopenedforuserrootby(uid=0)Jan210:51:39TecMintsudo:pam_unix(sudo:session):sessionclosedforuserroot
学习如何 使用带有 tail 和 cat 命令的 head 命令,以便在 Linux 下更有效的使用。
5、 tail 命令tail 输出一个文件的后面的部分(默认 10 行)。使用 -n 选项来指定显示的行数。
下面的命令将会输出指定文件的最后 5 行:
tecmint@TecMint~$tail-n5/var/log/auth.logJan613:01:27TecMintsshd[1269]:Serverlisteningon0.0.0.0port22.Jan613:01:27TecMintsshd[1269]:Serverlisteningon::port22.Jan613:01:27TecMintsshd[1269]:ReceivedSIGHUP;restarting.Jan613:01:27TecMintsshd[1269]:Serverlisteningon0.0.0.0port22.Jan613:01:27TecMintsshd[1269]:Serverlisteningon::port22.
另外,tail 有一个特殊的选项 -f ,可以 实时查看一个文件的变化 (尤其是日志文件)。
下面的命令将会使你能够监控指定文件的变化:
tecmint@TecMint~$tail-f/var/log/auth.logJan612:58:01TecMintsshd[1269]:Serverlisteningon::port22.Jan612:58:11TecMintsshd[1269]:ReceivedSIGHUP;restarting.Jan612:58:12TecMintsshd[1269]:Serverlisteningon0.0.0.0port22.Jan612:58:12TecMintsshd[1269]:Serverlisteningon::port22.Jan613:01:27TecMintsshd[1269]:ReceivedSIGHUP;restarting.Jan613:01:27TecMintsshd[1269]:Serverlisteningon0.0.0.0port22.Jan613:01:27TecMintsshd[1269]:Serverlisteningon::port22.Jan613:01:27TecMintsshd[1269]:ReceivedSIGHUP;restarting.Jan613:01:27TecMintsshd[1269]:Serverlisteningon0.0.0.0port22.Jan613:01:27TecMintsshd[1269]:Serverlisteningon::port22.
阅读 tail 的 man 手册,获取使用选项和说明的完整内容:
$mantail6、 sort 命令
sort 用于将文本文件或标准输入的行进行排序。
下面是一个名为 domain.list 的文件的内容:
tecmint@TecMint~$catdomains.listtecmint.comtecmint.comnews.tecmint.comnews.tecmint.comlinuxsay.comlinuxsay.comwindowsmint.comwindowsmint.com
你可以像这样运行一个简单的 sort 命令 来排序文件内容:
tecmint@TecMint~$sortdomains.listlinuxsay.comlinuxsay.comnews.tecmint.comnews.tecmint.comtecmint.comtecmint.comwindowsmint.comwindowsmint.com
你可以有多种方式来使用 sort 命令,请参阅以下一些关于 sort 命令的有用的文章。
uniq 命令用于报告或者忽略重复行,它从标准输入过滤行,并且把结果写到标准输出。
在对一个输入流运行 sort 之后,你可以使用 uniq 删除重复行,如下例所示。
为了显示行出现的数目,使用 -c 选项,要在对比时忽略大小写的差异,使用 -i 选项:
tecmint@TecMint~$catdomains.listtecmint.comtecmint.comnews.tecmint.comnews.tecmint.comlinuxsay.comlinuxsay.comwindowsmint.comtecmint@TecMint~$sortdomains.list|uniq-c2linuxsay.com2news.tecmint.com2tecmint.com1windowsmint.com
通过阅读 uniq 的 man 手册来获取进一步的使用信息和选项:
$manuniq8、 fmt 命令行
fmt 是一款简单的优化的文本格式化器,它重新格式化指定文件的段落,并且打印结果到标准输出。
以下是从文件 domain-list.txt 提取的内容:
1.tecmint.com2.news.tecmint.com3.linuxsay.com4.windowsmint.com
为了把上面的内容重新格式化成一个标准的清单,运行下面的命令,使用 -w 选项定义最大行宽度:
tecmint@TecMint~$catdomain-list.txt1.tecmint.com2.news.tecmint.com3.linuxsay.com4.windowsmint.comtecmint@TecMint~$fmt-w1domain-list.txt1.tecmint.com2.news.tecmint.com3.linuxsay.com4.windowsmint.com9、 pr 命令
pr 命令转换文本文件或者标准输入之后打印出来。例如在 Debian 系统上,你可以像下面这样显示所有的安装包:
$dpkg-l
为了将要打印的列表在页面和列中组织好,使用以下命令。
tecmint@TecMint~$dpkg-l|pr--columns3-l202017-01-0613:19Page1Desired=Unknown/Installiiadduseriiapg|Status=Not/Inst/Conf-iiadwaita-icon-themeiiapp-install-data|/Err?=(none)/Reinst-riiadwaita-icon-theme-iiapparmor||/Nameiialsa-baseiiapt+++-===================iialsa-utilsiiapt-cloneiiaccountsserviceiianacroniiapt-transport-httpsiiacliiapache2iiapt-utilsiiacpi-supportiiapache2-biniiapt-xapian-indexiiacpidiiapache2-dataiiaptdaemoniiadd-apt-keyiiapache2-utilsiiaptdaemon-data2017-01-0613:19Page2iiaptitudeiiavahi-daemoniibind9-hostiiaptitude-commoniiavahi-utilsiibinfmt-supportiiapturliiaviewiibinutilsiiapturl-commoniibansheeiibisoniiarchdetect-debiibaobabiibltiiaspelliibase-filesiiblueberryiiaspell-eniibase-passwdiibluetoothiiat-spi2-coreiibashiiblueziiattriibash-completioniibluez-cupsiiavahi-autoipdiibciibluez-obexd.....
其中,使用的标志如下:
这个命令从标准输入转换或者删除字符,然后输出结果到标准输出。
使用 tr 的语法如下:
$troptionsset1set2
看一下下面的例子,在第一个命令,set1( [:upper:] ) 代表指定输入字符的大小写(都是大写字符)。 set2([:lower:]) 代表期望结果字符的大小写。第二个例子意思相似,转义字符 /n 表示在新的一行打印输出:
tecmint@TecMint~$echo"WWW.TECMINT.COM"|tr[:upper:][:lower:]www.tecmint.comtecmint@TecMint~$echo"news.tecmint.com"|tr[:lower:][:upper:]NEWS.TECMINT.COM11、 more 命令
more 命令是一个有用的文件过滤器,最初为查看证书而建。它一页页显示文件内容,用户可以通过按回车来显示更多的信息。
你可以像这样使用它来显示大文件:
tecmint@TecMint~$dmesg|more[0.000000]Initializingcgroupsubsyscpuset[0.000000]Initializingcgroupsubsyscpu[0.000000]Initializingcgroupsubsyscpuacct[0.000000]Linuxversion4.4.0-21-generic(buildd@lgw01-21)(gccversion5.3.120160413(Ubuntu5.3.1-14ubuntu2))#37-UbuntuSMPMonApr1818:33:37UTC2016(Ubuntu4.4.0-21.37-generic4.4.6)[0.000000]Commandline:BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-genericroot=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1broquietsplashvt.handoff=7[0.000000]KERNELsupportedcpus:[0.000000]IntelGenuineIntel[0.000000]AMDAuthenticAMD[0.000000]CentaurCentaurHauls[0.000000]x86/fpu:xstate_offset[2]:576,xstate_sizes[2]:256[0.000000]x86/fpu:SupportingXSAVEfeature0x01:'x87floatingpointregisters'[0.000000]x86/fpu:SupportingXSAVEfeature0x02:'SSEregisters'[0.000000]x86/fpu:SupportingXSAVEfeature0x04:'AVXregisters'[0.000000]x86/fpu:Enabledxstatefeatures0x7,contextsizeis832bytes,using'standard'format.[0.000000]x86/fpu:Using'eager'FPUcontextswitches.[0.000000]e820:BIOS-providedphysicalRAMmap:[0.000000]BIOS-e820:[mem0x0000000000000000-0x000000000009d3ff]usable[0.000000]BIOS-e820:[mem0x000000000009d400-0x000000000009ffff]reserved[0.000000]BIOS-e820:[mem0x00000000000e0000-0x00000000000fffff]reserved[0.000000]BIOS-e820:[mem0x0000000000100000-0x00000000a56affff]usable[0.000000]BIOS-e820:[mem0x00000000a56b0000-0x00000000a5eaffff]reserved[0.000000]BIOS-e820:[mem0x00000000a5eb0000-0x00000000aaabefff]usable--More--12、 less 命令
less 是和上面的 more 命令相反的一个命令,但是它提供了额外的特性,而且对于大文件,它会更快些。
按照 more 命令相同的方式使用它:
tecmint@TecMint~$dmesg|less[0.000000]Initializingcgroupsubsyscpuset[0.000000]Initializingcgroupsubsyscpu[0.000000]Initializingcgroupsubsyscpuacct[0.000000]Linuxversion4.4.0-21-generic(buildd@lgw01-21)(gccversion5.3.120160413(Ubuntu5.3.1-14ubuntu2))#37-UbuntuSMPMonApr1818:33:37UTC2016(Ubuntu4.4.0-21.37-generic4.4.6)[0.000000]Commandline:BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-genericroot=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1broquietsplashvt.handoff=7[0.000000]KERNELsupportedcpus:[0.000000]IntelGenuineIntel[0.000000]AMDAuthenticAMD[0.000000]CentaurCentaurHauls[0.000000]x86/fpu:xstate_offset[2]:576,xstate_sizes[2]:256[0.000000]x86/fpu:SupportingXSAVEfeature0x01:'x87floatingpointregisters'[0.000000]x86/fpu:SupportingXSAVEfeature0x02:'SSEregisters'[0.000000]x86/fpu:SupportingXSAVEfeature0x04:'AVXregisters'[0.000000]x86/fpu:Enabledxstatefeatures0x7,contextsizeis832bytes,using'standard'format.[0.000000]x86/fpu:Using'eager'FPUcontextswitches.[0.000000]e820:BIOS-providedphysicalRAMmap:[0.000000]BIOS-e820:[mem0x0000000000000000-0x000000000009d3ff]usable[0.000000]BIOS-e820:[mem0x000000000009d400-0x000000000009ffff]reserved[0.000000]BIOS-e820:[mem0x00000000000e0000-0x00000000000fffff]reserved[0.000000]BIOS-e820:[mem0x0000000000100000-0x00000000a56affff]usable[0.000000]BIOS-e820:[mem0x00000000a56b0000-0x00000000a5eaffff]reserved[0.000000]BIOS-e820:[mem0x00000000a5eb0000-0x00000000aaabefff]usable:
关于“Linux下常用的过滤操作有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。