Linux四剑客

有四个剑客,他们很厉害

Find

查询命令,就是find

1
2
usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
       find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
  • 常用参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-name   	file		    				#查找名为file的文件;
-type   	b/d/c/p/l/f			    #查是块设备、目录、字符设备、管道、符号链接、普通文件;
-size     n[c]     		    		#查长度为n块[或n字节]的文件;
-perm               					#按执行权限来查找;
-user    	username   					#按文件属主来查找;
-group   	groupname  					#按组来查找;
-mtime    -n +n     					#按文件更改时间来查找文件,-n指n天以内,+n指n天以前;
-atime    -n +n     			    #按文件访问时间来查找文件;
-ctime    -n +n     			    #按文件创建时间来查找文件;
-mmin     -n +n     			    #按文件更改时间来查找文件,-n指n分钟以内,+n指n分钟以前;
-amin     -n +n     			    #按文件访问时间来查找文件;
-cmin     -n +n     			    #按文件创建时间来查找文件;
-nogroup            			    #查无有效属组的文件;
-nouser             			    #查无有效属主的文件;
-newer   	f1 !f2     			    #找文件,-n指n天以内,+n指n天以前;
-depth              			    #使查找在进入子目录前先行查找完本目录;
-fstype             			    #查更改时间比f1新但比f2旧的文件;
-mount              			    #查文件时不跨越文件系统mount点;
-follow             			    #如果遇到符号链接文件,就跟踪链接所指的文件;
-cpio              						#查位于某一类型文件系统中的文件;
-prune              			    #忽略某个目录;
-maxdepth											#查找目录级别深度
  • -name
1
2
3
4
find /home/ -name ‘file‘
# 查询home目录下文件名为file的文件
find /home/ -name ‘[a-z]*‘
# 查找home目录下文件名以小写字母开头的文件
  • -type
1
2
3
4
5
6
find /home/ -type d
# 查找home目录下的目录
find /home/ ! -type d
# 查找home目录下的非目录
find /home -type d | xargs chmod 755 -R
# 查找home目录下的目录,并将这个目录里的文件的权限设置为755
  • -size
1
2
3
4
5
6
find /home/ -size +1K
# 查找home目录下文件大于1K的文件
find /home/ -size -1M
# 查找home目录下文件小于1M的文件
find /home/ -size 10K
# 查找home目录下文件等于10K的文件
  • -perm
1
2
3
4
5
6
find /home/ -perm -775
# 减号代表的意思是 比当前775更充足的权限 所有1的部分必须被匹配
find /home/ -perm +001
# 加号代表的意思是 只要有权限位置符合查询条件即可
find /home/ -perm 644
# 查询 644的文件及目录

Grep

Global search regular expression

1
2
3
4
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
	[-e pattern] [-f file] [--binary-files=value] [--color=when]
	[--context[=num]] [--directories=action] [--label] [--line-buffered]
	[--null] [pattern] [file ...]
  • 常用参数
1
2
3
4
5
6
7
8
9
-a 						# 以文本文件方式搜索;
-c 						# 计算找到的符合行的次数;
-i 						# 忽略大小写;
-n 						# 顺便输出行号;
-v 						# 反向选择,即显示不包含匹配文本的所有行;
-h 						# 查询多文件时不显示文件名;
-l 						# 查询多文件时只输出包含匹配字符的文件名;
-s 						# 不显示不存在或无匹配文本的错误信息;
-E 						# 允许使用egrep扩展模式匹配。
  • 常用通配符
1
2
3
4
5
6
7
8
9
*							# 0个或者多个字符、数字;
?							# 匹配任意一个字符;
#							# 表示注解;
|							# 管道符号;
;							# 多个命令连续执行;
&							# 后台运行指令;
!							# 逻辑运算非;
[]						# 内容范围,匹配括号中内容;
{}						# 命令块,多个命令匹配
  • 正则表达式
1
2
3
*							# 前一个字符匹配0次或多次
+							# 前面的正则表达式1次或多次
?							# 前面的正则表达式出现0次或多次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
^							# 匹配行首,即以某个字符开头;
$							# 匹配行尾,即以某个字符结尾;
\(..\) 				# 标记匹配字符;
[]						# 匹配中括号里的任意指定字符,但只匹配一个字符;
[^]						# 匹配除中括号以外的任意一个字符;
\							# 转义符,取消特殊含义;
\< 						# 锚定单词的开始;
\> 						# 锚定单词的结束;
{n}						# 匹配字符出现n次;
{n,}					# 匹配字符出现大于等于n次;
{n,m}					# 匹配字符至少出现n次,最多出现m次;
\w 						# 匹配文字和数字字符;
\W 						# \w的反置形式,匹配一个或多个非单词字符;
\b 						# 单词锁定符;
\s						# 匹配任何空白字符;
\d						# 匹配一个数字字符,等价于[0-9]
  • 练一个
1
# 查询文件ip地址

Awk

AWK是一个优良的文本处理工具,LinuxUnix环境中现有的功能最强大的数据处理引擎之一

AhoWeinbergerKernighan三位发明者名字首字母命名为AWKAWK是一个行级文本高效处理工具

AWK经过改进生成的新的版本有NawkGawk,一般Linux默认为GawkGawk是 AWKGNU开源免费版本,也就是我们现在所使用的版本

AWK基本原理是逐行处理文件中的数据,查找与命令行中所给定内容相匹配的模式

如果发现匹配内容,则进行下一个编程步骤,如果找不到匹配内容,则 继续处理下一行

1
usage: awk [-F fs] [-v var=value] [-f progfile | ‘prog‘] [file ...]
  • 内置变量
变量 解释
FS 分隔符
OFS 输出分隔符
NR 当前行数,从-1开始
NF 当前记录字段个数
$0 当前记录
$1~$n 当前记录第n个字段(列)
  • 内置函数
函数 解释
gsub(r, s) $0中用s代替r
index(s, t) 返回st的第一个位置
length(s) s的长度
match(s, r) s是否匹配r
split(s, a, fs) fs
substr(s, p 返回sp开始的子串
  • 操作符
操作符 解释
++、– 增加或减少
^、** 指数
!、+、- 非、一元加减
+、-、*、/、%、 四则运算、取余
<<、<=、==、!=、>=、> 比较大小
&&、|| 逻辑and、逻辑or
=、+=、-=、=、/=、%=、^=、*= 赋值

Sed

在处理文本时把当前处理的行存储在临时缓冲区中,称为:模式空间,pattern space

然后SED命令处理缓冲区中的内容,处理完成后将缓冲区的内容输出至屏幕或者写入文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
x                   				# x为指定行号;
x,y                 		    # 指定从x到y的行号范围;
/pattern/           		    # 查询包含模式的行;
/pattern/pattern/   		    # 查询包含两个模式的行;
/pattern/,x         		    # 从与pattern的匹配行到x号行之间的行;
x,/pattern/         		    # 从x号行到与pattern的匹配行之间的行;
x,y!                		    # 查询不包括x和y行号的行;
r                						# 从另一个文件中读文件;
w                						# 将文本写入到一个文件;
y                						# 变换字符;
q             							# 第一个模式匹配完成后退出;
l                						# 显示与八进制ASCII码等价的控制字符;
{}              			    	# 在定位行执行的命令组;
p                						# 打印匹配行;
=                						# 打印文件行号;
a\              			    	# 在定位行号之后追加文本信息;
i\              			    	# 在定位行号之前插入文本信息;
d                						# 删除定位行;
c\              			    	# 用新文本替换定位文本;
s                						# 使用替换模式替换相应模式;
n                						# 读取下一个输入行,用下一个命令处理新的行;
N                           # 将当前读入行的下一行读取到当前的模式空间。
h                						# 将模式缓冲区的文本复制到保持缓冲区;
H                						# 将模式缓冲区的文本追加到保持缓冲区;
x                						# 互换模式缓冲区和保持缓冲区的内容;
g                						# 将保持缓冲区的内容复制到模式缓冲区;
G                						# 将保持缓冲区的内容追加到模式缓冲区。

sed工具默认处理文本,文本内容输出屏幕已经修改,但是文件内容其实没有修改

需要加-i参数即对文件彻底修改;

  • 查看文件
1
2
3
4
5
6
7
cat -n file | sed -n "p"
# 查看file文件 并且阅读其中所有行,因p前无规则
cat -n file | sed -n "1,3p"
# 查看file文件 1-3行
sed "1p;\$p" file
sed ‘1p;$p‘ file
# 查看文件第一行和最后一行
  • 删除文件内容
1
2
3
4
5
6
sed ‘1,3d‘ file
# 删除文件第一到第三行
sed ‘$d‘ file
# 删除文件最后一行
sed -i ‘/#*/d‘ file
# 删除文件中以#号开头的行
  • 替换文本内容
1
2
3
4
5
sed ‘s/old/new/g‘ file
sed -i ‘s/old/new/g‘ file # 加了-i那么修改会影响到原本的文件对象
# 替换file文件中的old内容为new
#	s:使用替换模式替换相应模式
# g:将保持缓冲区的内容复制到模式缓冲区;
  • 追加文本内容
1
2
3
4
sed "/###/a 123123123" file
# 在file的符合###匹配的 后面加一行123123123
sed "1,3a 123123123" file
# 在文件的1,3行追加123123123
  • 插入文本内容
1
2
3
4
sed "/###/a 123123123" file
# 在file的符合###匹配的 前面加一行123123123
sed "1,3a 123123123" file
# 在文件的1,3行前面加123123123

原文地址:https://www.cnblogs.com/wa1314/p/12154698.html

时间: 2024-08-30 15:41:22

Linux四剑客的相关文章

linux 四剑客 find 、grep、sed、awk整理

linux 四剑客 find .grep.sed.awk整理 find 主要是用于查找Linux 操作系统的某个文件.目录所在路径,查找出满足条件的文件或者目录的路径 find / -name *.rpm -type d -- ###/:表示是在根目录下进行查找 ###-type:查找的类型,d是目录,f是普通文件 find / -name "con*.log" -exec cp {} /tmp/ \; ####基于 find 查找 Linux 系统以.log 结尾,同时名称以 con

linux四剑客-grep/find/sed/awk/详解-技术流ken

1.四剑客简介 相信接触过linux的大家应该都学过或者听过四剑客,即sed,grep,find,awk,有人对其望而生畏,有人对其爱不释手.参数太多,变化形式太多,使用超级灵活,让一部分人难以适从继而望而生畏,浅尝辄止即罢.有人熟练掌握,使其四剑客为己所用,在分析日志,分析文本,统计,批量修改中游刃有余,大大提高了工作效率.本篇博文将详细讲解四剑客的参数选项,以及使用案例,相信认真读完本篇博文你也可以使得四剑客真正为己所用. 2.四剑客之grep 1.几个概念 正则表达式:Regular Ex

Linux 命令之 linux 四剑客

Linux命令-- 四剑客 一:Linux命令 之 AWK 符号:^ 开头 $ 结尾 awk 是一种处理文本的语言,一个强大的文本分析命令! 1:提取文件中的每行的第二个 提取前文本中内容为  命令:cat 1.txt | awk '{print($2)}' 在 AWK 命令中,它将文本每列的部分当做一部分! 或着我们可以指定分隔符,指定提取某一部分! 我们以2为分隔符 命令:cat 1.txt | awk -F "2" '{print($2)}'  输出前三行 打印文件每行最后的字段

linux四剑客常用命令汇总

**四剑客常用命令汇总** 1.find find path -option [ -print ] [ -exec -ok command ] {} (find 查找路径 -type f/d -name ..... -size 1k/M -mtime/atime/ctime +-9 文件) find -type/-perm/-empty/ find /tmp -type f -name "*.tmp" -exec rm -rf '{}' \; find / -type f -name

Linux四剑客find/grep/awk/sed

find ./ -name "*txt" -maxdepth 1 -type f -mtime -2 -exec mv {} ./bbb.txt \; 这条命令表示找当前目录(-maxdepth 1,没这条是递归找当前目录的所有子目录)且是文件的(-type f)且两天以内创建的(-mtime -2,如果是+2表示两天前创建的,还可以-mmin以分钟为单位),且名字是匹配*txt(linux通配符和regex不同,linux自带的特殊字符 必须在""内)然后将这些文

Linux 四剑客介绍和案例

正则表达式 Linux中文本处理工具:grep(只支持基础正则表达式)egrep(支持扩展正则表达式)sed (支持扩展正则表达式)awk (支持基础正则表达式支持扩展正则表达式) 基础正则表达式元字符: \ :转义字符,!,\n 等^ :匹配字符串开始的位置 如:^a:以a开头的字符$ :匹配字符串结束的位置 如:word$:以word结束的位置. : 匹配/n之外的任意的一个字符 如:go.d:匹配good .代表任意字符可以是多个 :匹配前面子表达式 0此或者多次 如:good :匹配go

SHELL编程四剑客练习--sed

SHELL编程四剑客: sed    awk     grep      find sed  可以将数据行进行替换.删除.新增.选取等特定工作 1.sed 如果不加任何参数,是不会去修改文件中的内容的.加 -i  参数会修改,如下图: 2.在文件行首加空格或其他字符,如下图: 行首   ^ 3.在行尾添加字符,如下图: 行尾   $ 4.在某行之后添加内容,如下图: 如果要在之前添加内容,把  a  改为  i   就OK了. 5.只显示其中某一行,如下图: 匹配关键字,"p"&quo

Flask快速入门(2) — Flask四剑客与配置文件

目录 Flask四剑客 配置文件的方式 第一种方式 第二种方式 第三种方式 第四种方式 其他方式 Flask四剑客 在Django中后端返回响应有几种形式:render(前端渲染页面).redirect(重定向跳转).HttpResponse(直接返回).JsonResponse(实际内部继承了HttpResponse,返回json字符串). 在Flask中也有相对的返回机制: render:前端渲染页面 redirect_:重定向跳转 jsonify:返回json字符串 return 'xx'

Flask 四剑客

Flask 四剑客 返回字符串,返回 html , 跳转路由,返回 json from flask import Flask, render_template, redirect, jsonify app = Flask(__name__) @app.route('/index/') def index(): # 返回字符串 # return 'hello flask' # 返回一个 HTML # 从 flask 里面导入 render_template # 在同级目录中添加templates文