当前位置: 首页 > 后端技术 > PHP

Linux常用的文本处理命令

时间:2023-03-29 14:11:26 PHP

在使用Linux的过程中,最常见的操作就是对文件/文本进行一些处理。本文简单介绍Linux中常用的文本处理命令,主要包括以下命令:find/grep/sort/cut/awk/sed/uniq/tee/tr/diff/cmp/split/xargs,将在下面转。find命令说明:查找满足条件的文件,执行指定操作命令格式:find[指定目录][搜索规则][指定操作]1.1指定目录[dir1dir2]#可以指定多个目录1.2搜索规则[-name]#按文件名搜索(区分大小写|支持通配符)[-iname]#按文件名搜索(不区分大小写|支持通配符)[-user]#按用户搜索[-group]#根据用户组查找[-nouser]#查找不属于用户的文件[-nogroup]#查找不属于用户组的文件[-uid]#根据用户ID查找[-gid]#根据组ID查找[-a]#AND连接两个A条件[-o]#OR连接两个条件[-not]#NOT反转条件[-atime-n/+n]#根据文件访问时间(n天之内/n天之前)[-ctime-n/+n]#按文件创建时间(n天内/n天前)[-mtime-n/+n]#按文件修改时间(n天内/n天前)[-typef/d/l/b/c/p/s]#由file类型(普通文件/目录文件/链接文件/块设备文件/字符设备文件/管道文件/socket文件)[-size2M/+2M/-2M]#按文件大小(等于2M/大于2M/小于2M)[-perm755]#根据文件权限指定操作(755权限)1.3{}#代表找到的文件[-print]#打印搜索后的结果(默认操作)[-ls]#显示搜索后的结果列表[-ok]#搜索后询问用户是否执行命令[-exec]#搜索后不询问直接执行命令1.4示例需求:search(/data/and/www/)普通后缀(.php或.sh)并在5天内创建并重命名的文件。[命令1]find/data//www/-name".php"-o-name".sh"-ctime-5-typef-execmv{}{}.bak;说明:上面的命令[-exec],只会重命名满足.sh规则的文件,忽略-o条件找到的.php文件,所以不符合要求。另外,你必须注意空格和;在命令的末尾。[命令2]find/data//www/-name".php"-o-name".sh"-ctime-5-typef|xargs-imv{}{}.bak说明:借助xargs-i命令满足要求。这个命令后面会介绍。grep命令说明:使用正则表达式逐行搜索文本命令格式:grep[option][指定模式][指定文件]2.1option[-c]#计算满足条件的行数[-i]#不满足distinctingcharactersizeWrite[-h]#显示匹配指定模式的行前不标明该行的文件名[-H]#显示匹配指定模式的行前标示该行的文件名[-l]#列出内容匹配指定模式的文件名[-L]#列出内容不匹配指定模式的文件名[-n]#在显示匹配指定模式的行之前显示该行的行号[-v]#显示所有不匹配指定模式的行[-s]#不显示错误信息2.2指定模式正则表达式2.3指定要搜索的文件/支持多个文件2.4示例没有排序命令说明:是的文本文件按照以下顺序排序以行为单位遵守指定的规则。命令格式:sort[option][specifyfile]3.1option[-b]#忽略每行前面的空格[-c]#检查文件是否按顺序排序[-f]#忽略大小写字母排序时[-M]#根据月份的缩写对前3个字母进行排序[-n]#根据值的大小进行排序[-onew.txt]#将排序后的结果存入指定文件(new.txt)txt)[-r]#倒序排序[-t':']#指定排序时的字段分隔符(:)[-k]#选择排序的区间(与-t结合使用)[-u]#排序结去重3.2指定要排序的文件3.3例如没有cut命令说明:以行为单位按字符/字节/分片分割输出文本文件命令格式:cut[-bn][file]orcut[-c][file]或cut[-df][file]4.1option[-b]#以字节为单位分割[-c]#以字符为单位分割[-d]#自定义分隔符/默认为制表符[-f]#拆分哪个字段(与-d结合使用)[-n]#取消splitting多字节字符(与-b结合使用|避免分割中文乱码)4.2按字节分割[-bn][file]4.3按字符分割[-c][file]4.4按段分割[-d':'-f1-n][file]解释:splitwith:作为分隔符,输出指定的第[1-n]段4.5比如没有awk命令说明:awk是一种在linux/unix下处理文本和数据的编程语言。数据可以来自标准输入(stdin)、一个或多个文件或其他命令的输出。它支持用户自定义函数、动态正则表达式等高级功能,是linux/unix下强大的编程工具。它在命令行上使用,但更多时候作为脚本使用。awk有很多内置的函数,比如数组、函数等,这些和C语言是一样的,灵活性是awk最大的优势。sed命令说明:sed是一个流编辑器,是文本处理中非常有用的工具。能与正则表达式完美配合,功能非凡。处理时,将当前处理的行存储在一个临时缓冲区中,这个缓冲区称为模式空间,然后使用sed命令处理缓冲区的内容,处理完成后,将缓冲区的内容发送到屏幕。然后处理下一行,重复直到文件结束。除非您使用重定向存储输出,否则文件内容不会更改。sed主要用于自动编辑一个或多个文件,简化对文件的重复操作,编写转换程序等uniq命令说明:删除排序文件中的重复行(与sort结合使用)必须保证所有重复行都是相邻命令format:uniq[option][inputfile][outputfile]7.1option[-b]#在输出行前加上该行在文件中出现的次数[-d]#只显示重复行[-u]#仅显示非重复行[-n]#前n个字段和之前的每个字段[-fn]#忽略前n个字段以及每个字段之前的空格[+n]#忽略前n个字符[-sn]#忽略前n个字符[-wn]#指定第n个字符进行比较0,字符从0开始编号。7.2输入文件被行去重7.3去重后生成输出文件7.4例子没有tee命令说明:将数据重定向到指定文件并输出到屏幕命令格式:tee[option][specifyFile]8.1option[-a]#重定向到文件时使用append模式[-i]#忽略中断信号8.2指定文件保存文件的输出内容8.3例如没有tr命令说明:Forstandardinput字符被替换/压缩/删除命令格式:tr[option][characterset1][characterset2]9.1option[-c]#替换所有不属于字符集1的字符[-d]#全部删除characterset1character[-s]#将连续重复的字符表示为单个字符[-t]#首先删除characterset1中多于characterset2的字符9.2characterset1指定原字符集为被转换或删除9.3字符acterset2指定要转换成的目标字符集9.4Exampletoconvertuppercaseletterstolowercaseecho'PHPHA.COM'|tr'A-Z''a-z'输出:phpha.com删除数字echo'1PHPHa2.com3'|tr-d'0-9'output:PHPHa.com用指定的字符替换连续的重复字符(s/n/space)echo'thissssisatextlinnnne'|tr-s'sn'output:thisisatextlinediff命令说明:逐行比较给定的两个文件命令格式:diff[option][file1][file2]10.1option[-a]#将两个文件视为文本文件[-b]#忽略空格[-B]#忽略空行[-c]#使用大纲输出格式[-H]#使用启发式加速大文件搜索[-i]#忽略大小写[-u]#合并显示方式10.2例如没有cmp命令说明:比较两个文件的差异命令格式:cmp[option][file1][file2]11.1option[-l]#markalldifferences[-s]#不显示错误信息[-nN]#设置比较的上限(最多N字节)[-iN]#比较超过前N个字节[-iN1:N2]#跳过文件N1字节的1和比较文件2的N2字节比较11.2例如没有split命令说明:将一个大文件分成多个小文件命令格式:split[option][file]12.1option[-bN]#每个输出文件的大小(N字节)/即每个小文件的大小[-d-aN]#使用数字作为拆分小文件的文件名后缀/数字长度为N12.2例子将[test.file]拆分成一个10k的小文件,并以数字为后缀命名[root@PHPHa~]#split-b10ktest.file-d-a3[root@PHPHa~]#lltotal232-rw-r--r--1rootroot102400Sep614:47test.file-rw-r--r--1rootroot10240Sep614:48x000-rw-r--r--1rootroot10240Sep614:48x001-rw-r--r--1rootroot10240Sep614:48x002-rw-r--r--1rootroot10240Sep614:48x003-rw-r--r--1rootroot10240Sep614:48x004-rw-r--r--1rootroot10240Sep614:48x005-rw-r--r--1rootrootroot10240Sep614:48x006-rw-r--r--1rootroot10240Sep614:48x007-rw-r--r--1rootroot10240Sep614:48x008-rw-r--r--1rootroot10240Sep614:48x009xargs命令说明:作为passin的过滤器g参数给其他命令,有很多组合xargs的一个工具,擅长将标准输入数据转换为命令行参数,xargs可以处理管道或标准输入并将它们转换为特定命令的命令行参数。xargs还可以将单行或多行文本输入转换为其他格式,例如多行转换为单行,单行转换为多行。命令格式:xargs[option]13.1option[-nN]#指定每行的最大列数(N)以多行输出[-d':']#定义分隔符(:)[-I'{}']#指定替换字符串({})13.2示例测试文件[root@PHPHa~]#cattest.txtabcdefghijklmn多行输出[root@PHPHa~]#cattest.txt|xargs-n4abcdefghijklmn分隔符[root@PHPHa~]#echo"PHP:MySQL:Redis"|xargs-d":"使用PHPMySQLRedis替换字符串[root@PHPHa~]#lltotal4-rw-r--r--1rootroot28Sep614:58test.txt[root@PHPHa~]#寻找。-name'*.txt'-typef|xargsrm-f{}[root@PHPHa~]#lltotal0