linux 删除php -m 命令,Linux常用文本处理命令

在使用Linux的过程中,最常做的操作就是对文件/文本进行一些处理。本文简单介绍下Linux中常用的文本处理命令,主要包括以下命令: find / grep / sort / cut / awk / sed / uniq / tee / tr / diff / cmp / split / xargs,下面依次介绍。

1. find

命令说明: 查找符合条件的文件,并执行指定的操作

命令格式: find [指定目录] [查找规则] [指定操作]

1.1 指定目录

[dir1 dir2] # 可以指定多个目录

1.2 查找规则

[-name] # 根据文件名查找 (区分大小写|支持通配符)

[-iname] # 根据文件名查找 (不区分大小写|支持通配符)

[-user] # 根据所属用户查找

[-group] # 根据所属用户组查找

[-nouser] # 查找无所属用户的文件

[-nogroup] # 查找无所属用户组的文件

[-uid] # 根据用户ID查找

[-gid] # 根据组ID查找

[-a] # AND 连接两个条件

[-o] # OR 连接两个条件

[-not] # NOT 对条件取反

[-atime -n/+n] # 按文件访问时间 (n天以内 / n天以前)

[-ctime -n/+n] # 按文件创建时间 (n天以内 / n天以前)

[-mtime -n/+n] # 按文件修改时间 (n天以内 / n天以前)

[-type f/d/l/b/c/p/s] # 按文件类型 (普通文件/目录文件/链接文件/块设备文件/字符设备文件/管道文件/socket文件)

[-size 2M/+2M/-2M] # 按文件大小 (等于2M / 大于2M / 小于2M)

[-perm 755] # 按文件权限 (755权限)

1.3 指定操作

{} # 代表找到的文件

[-print] # 查找后打印结果 (默认操作)

[-ls] # 查找后把结果列表显示

[-ok] # 查找后询问用户是否执行命令

[-exec] # 查找后不询问直接执行命令

1.4 举例说明

要求:查找 (/data/ 和 /www/) 目录下的后缀名为 (.php 或 .sh) 且创建时间在 5天之内 的 普通文件 并 重命名。# [命令1]

find /data/ /www/ -name "*.php" -o -name "*.sh" -ctime -5 -type f -exec mv {} {}.bak \;

说明:以上命令 [-exec] ,只会对满足 *.sh 规则的文件进行重命名操作,而忽略了 -o 条件查找出来的 *.php 文件,因此并不能满足要求,另外一定要注意命令结尾的空格和 \; 。# [命令2]

find /data/ /www/ -name "*.php" -o -name "*.sh" -ctime -5 -type f | xargs -i mv {} {}.bak

说明:借助 xargs -i 命令满足了要求。这个命令后续会进行介绍。

2. grep

命令说明: 使用正则表达式来按行搜索文本

命令格式: grep [选项] [指定模式] [指定文件]

2.1 选项

[-c] # 计算符合条件的行数

[-i] # 不区分字符大小写

[-h] # 在显示匹配指定的模式的那一行之前不标示该行所属的文件名

[-H] # 在显示匹配指定的模式的那一行之前标示该行所属的文件名

[-l] # 列出文件内容匹配指定的模式的文件名

[-L] # 列出文件内容不匹配指定的模式的文件名

[-n] # 在显示匹配指定的模式的那一行前显示该行的行号

[-v] # 显示不匹配指定的模式的所有行

[-s] # 不显示错误信息

2.2 指定模式正则表达式

2.3 指定文件要查找的文件/支持多文件

2.4 举例说明暂无

3. sort

命令说明: 对文本文件以行为单位按照指定的规则进行排序

命令格式: sort [选项] [指定文件]

3.1 选项

[-b] # 忽略每行前面的空格

[-c] # 检查文件是否已经按照顺序排序

[-f] # 排序时忽略大小写字母

[-M] # 将前3个字母按照月份的缩写进行排序

[-n] # 按照数值的大小进行排序

[-o new.txt] # 将排序后的结果存入指定文件 (new.txt)

[-r] # 以相反的顺序来排序

[-t ':'] # 指定排序时的栏位分隔符 (:)

[-k] # 选择以哪个区间进行排序 (与 -t 结合使用)

[-u] # 对排序结进行去重

3.2 指定文件要进行排序的文件

3.3 举例说明暂无

4. cut

命令说明: 对文本文件以行为单位按照字符/字节/片段进行分割并输出

命令格式: cut [-bn] [文件] 或 cut [-c] [文件] 或 cut [-df] [文件]

4.1 选项

[-b] # 以字节为单位进行分割

[-c] # 以字符为单位进行分割

[-d] # 自定义分隔符/默认为制表符

[-f] # 以哪个字段进行分割 (与 -d 结合使用)

[-n] # 取消分割多字节字符 (与 -b 结合使用 | 避免分割中文乱码)

4.2 按字节分割

cut [-bn] [文件]

4.3 按字符分割

cut [-c] [文件]

4.4 按片段分割

cut [-d ':' -f 1-n] [文件]

说明:以 : 为分隔符进行分割后输出指定的(第[1-n]个)片段

4.5 举例说明暂无

5. awk

命令说明: awk 是一种编程语言,用于在 linux/unix 下对文本和数据进行处理。数据可以来自标准输入 (stdin) 、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是 linux/unix 下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk 有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是 awk 最大的优势。

6. sed

命令说明: sed 是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为模式空间(pattern space),接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed 主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。

7. uniq

命令说明: 删除排序过的文件中的重复行 (与 sort 结合使用) 必须保证所有的重复行是相邻的

命令格式: uniq [选项] [输入文件] [输出文件]

7.1 选项

[-b] # 在输出行前加上该行在文件中出现的次数

[-d] # 仅显示重复的行

[-u] # 仅显示不重复的行

[-n] # 前n个字段与每个字段前的空白一起被忽略

[-f n] # 前n个字段与每个字段前的空白一起被忽略

[+n] # 前n个字符被忽略

[-s n] # 前n个字符被忽略

[-w n] # 指定要比较第n个字符

说明:一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开,字段从0开始编号,字符从0开始编号。

7.2 输入文件要进行按行去重的文件

7.3 输出文件去重后生成的文件

7.4 举例说明暂无

8. tee

命令说明: 将数据重定向到指定文件并在屏幕上输出

命令格式: tee [选项] [指定文件]

8.1 选项

[-a] # 向文件中重定向时使用追加模式

[-i] # 忽略中断信号

8.2 指定文件要保存输出的内容的文件

8.3 举例说明暂无

9. tr

命令说明: 对来自标准输入的字符进行替换/压缩/删除

命令格式: tr [选项] [字符集1] [字符集2]

9.1 选项

[-c] # 取代所有不属于 字符集1 的字符

[-d] # 删除所有属于 字符集1 的字符

[-s] # 把连续重复的字符以单独的一个字符表示

[-t] # 先删除 字符集1 较 字符集2 多出的字符

9.2 字符集1指定要转换或删除的原字符集

9.3 字符集2指定要转换成的目标字符集

9.4 举例说明# 将大写字母转换为小写

echo 'PHPHA.COM' | tr 'A-Z' 'a-z'

# output: phpha.com

# 删除数字

echo '1PHPHa2.com3' | tr -d '0-9'

# output: PHPHa.com

# 替换连续重复的字符(s/n/空格)为一个指定的字符

echo 'thissss is a text linnnne' | tr -s ' sn'

# output: this is a text line

10. diff

命令说明: 逐行对给定的两个文件进行比较

命令格式: diff [选项] [文件1] [文件2]

10.1 选项

[-a] # 将两个文件当做文本文件来处理

[-b] # 忽略空格

[-B] # 忽略空行

[-c] # 使用纲要输出格式

[-H] # 利用试探法加速大文件搜索

[-i] # 忽略大小写

[-u] # 以合并的方式来显示

10.2 举例说明暂无

11. cmp

命令说明: 比较两个文件是否有差异

命令格式: cmp [选项] [文件1] [文件2]

11.1 选项

[-l] # 标示出所有不一样的地方

[-s] # 不显示错误信息

[-n N] # 设定比较的上限 (最多 N 个字节)

[-i N] # 越过开始的 N 个字节进行比较

[-i N1:N2] # 越过 文件1 的 N1 个字节且越过 文件2 的 N2 个字节进行比较

11.2 举例说明暂无

12. split

命令说明: 将一个大文件分成多个小文件

命令格式: split [选项] [文件]

12.1 选项

[-b N] # 每个输出档案的大小 (N字节) / 即每个小文件的大小

[-d -a N] # 使用数字作为分割出的小文件的文件名后缀 / 数字长度为 N

12.2 举例说明# 分割 [test.file] 为 10k 大小的小文件且以数字后缀来命名

[root@PHPHa ~]# split -b 10k test.file -d -a 3

[root@PHPHa ~]# ll

total 232

-rw-r--r-- 1 root root 102400 Sep 6 14:47 test.file

-rw-r--r-- 1 root root 10240 Sep 6 14:48 x000

-rw-r--r-- 1 root root 10240 Sep 6 14:48 x001

-rw-r--r-- 1 root root 10240 Sep 6 14:48 x002

-rw-r--r-- 1 root root 10240 Sep 6 14:48 x003

-rw-r--r-- 1 root root 10240 Sep 6 14:48 x004

-rw-r--r-- 1 root root 10240 Sep 6 14:48 x005

-rw-r--r-- 1 root root 10240 Sep 6 14:48 x006

-rw-r--r-- 1 root root 10240 Sep 6 14:48 x007

-rw-r--r-- 1 root root 10240 Sep 6 14:48 x008

-rw-r--r-- 1 root root 10240 Sep 6 14:48 x009

13. xargs

命令说明: 作为给其他命令传递参数的过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs 能够处理管道或者stdin 并将其转换成特定命令的命令参数。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

命令格式: xargs [选项]

13.1 选项

[-n N] # 指定每行的最大列数 (N) 以多行输出

[-d ':'] # 定义一个定界符 (:)

[-I '{}'] # 指定一个替换字符串 ({})

13.2 举例说明# 测试文件

[root@PHPHa ~]# cat test.txt

a b c d e f g

h i j k

l m n

# 多行输出

[root@PHPHa ~]# cat test.txt | xargs -n 4

a b c d

e f g h

i j k l

m n

# 定界符

[root@PHPHa ~]# echo "PHP:MySQL:Redis" | xargs -d ":"

PHP MySQL Redis

# 替换字符串的使用

[root@PHPHa ~]# ll

total 4

-rw-r--r-- 1 root root 28 Sep 6 14:58 test.txt

[root@PHPHa ~]# find . -name '*.txt' -type f | xargs rm -f {}

[root@PHPHa ~]# ll

total 0

【总结】

以上是对部分常用的[文件/文本处理命令]的不完全介绍,每个命令的所有选项及用法请以命令手册为准。

另外以上的介绍结合了本人自己的理解,如有错误的地方欢迎指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值