建设一个棋牌网站都得准备什么用,做网站需要什么专业方向的员工,如何给网站做301重定向,代理办营业执照的公司文本三剑客指 Linux环境下的 grep#xff08;搜索#xff09;、sed#xff08;编辑#xff09;、awk#xff08;分析#xff09;三款用于文本处理的核心命令#xff0c;三者分工明确、功能互补#xff0c;是处理日志、配置文件、结构化数据等场景的 “刚需工具”。一、…文本三剑客指 Linux环境下的 grep搜索、sed编辑、awk分析三款用于文本处理的核心命令三者分工明确、功能互补是处理日志、配置文件、结构化数据等场景的 “刚需工具”。一、grep文本搜索grep命令的核心定位是文本搜索可以按照“关键词”或“正则表达式”在数据源中进行行过滤从而检索到相匹配的行。该命令不修改文本内容只负责查找内容。1、命令格式grep [参数] 匹配内容 [文件名]2、常见参数-i: 不区分大小写-n: 显示行号-r: 逐层遍历目录查找-v: 查找不包含指定内容的行,反向选择-E:使用扩展正则匹配^key:以关键字开头key$:以关键字结尾^$:匹配空行-w: 按单词搜索-o: 打印匹配关键字-c: 统计匹配到的次数-A: 显示匹配行及后面多少行-B: 显示匹配行及前面多少行-C: 显示匹配行前后多少行-l只列出匹配的文件名-L列出不匹配的文件名-e: 使用正则匹配3、应用示例
#忽略大小写匹配包含Error的行
grep -i Error catalog.out#精确匹配Error单词
grep -w Error catalog.out#打印匹配到的关键字Error
grep -wo Error catalog.out#打印匹配到Error关键字的行号
grep -n Error catalog.out#忽略大小写匹配统计包含关键字Error的行
grep -ni Error catalog.out#忽略大小写匹配统计包含关键字Error的行数
grep -nic Error catalog.out#忽略大小写匹配以Error开头的行
grep -i ^Error catalog.out#匹配以bash结尾的行
grep bash$ /etc/passwd#匹配空行并打印行号
grep -n ^$ /etc/passwd#匹配以#号开头的行
grep ^# nginx.conf#匹配不以#号开头的行
grep -v ^# nginx.conf#匹配包含Cause关键字及其后5行
grep -A 5 Cause catalog.out#匹配包含Cause关键字及其前5行
grep -B 5 Cause catalog.out#匹配包含Cause关键字及其前后5行
grep -C 5 Cause catalog.out二、sed文本编辑sed是一种流文本编辑工具专注于按照指定规则批量修改文本如替换字符、删除、插入等。编辑文件的时候会在内存中开辟一块模式空间缓存空间以行为单位将文件内容加载到该空间并在其中进行内容编辑。编辑完成后会默认在当前终端界面打印内容然后清空缓存 空间里的内容再来读取第二行内容依次循环。通过制定选项才会修改原文件。1、命令格式sed [参数] 匹配条件 [动作] [文件名]sed -i [替换格式] [文件名]源数据 | sed -i [替换格式]2、常见参数空只展示sed的操作效果实际上不对文件进行编辑-n不自动打印所有内容-e基于命令实现对文件的多点编辑操作-f从指定文件中读取编辑文件的“匹配条件动作”-r支持使用扩展正则表达式-i表示对文件进行编辑-i.bak复制文件原内容到备份文件然后对原文件编辑3、常见匹配条件匹配条件分为两种数字行号或者关键字匹配
数字行号空表示所有行n表示第n行$表示末尾行n,m表示第n到m行内容n,m 表示第n到nm行~步进1~2 表示奇数行2~2 表示偶数行关键字匹配/关键字/4、常见动作-a[\text]在匹配到的内容下一行增加内容支持\n实现多行追加-i[\text]在匹配到的内容当前行增加内容-c[\text]在匹配到的内容替换内容-d|p删除|打印匹配到的内容-s替换匹配到的内容W /path/somefile保存模式匹配的行至指定文件r /path/somefile读取指定文件的文本至模式空间中为模式空间中的行打印行号! 模式空间中匹配行取反处理5、常见替换格式行号s/原内容/替换后内容/列号替换指定匹配的内容s/原内容/替换后内容/替换每行首个匹配内容s/原内容/替换后内容/g替换所有匹配的内容行号s/原内容/新增内容/列号替换指定的内容符号代表源内容实现的效果是 原内容新内容行号a\新增内容在指定行号的下一行增加内容行号i\新增内容在指定行号的当行增加内容行号d删除指定行行号c\内容替换指定行整行内容行号r 文件名替换文件内容到指定行行号w 文件名将指定行内容保存到指定文件6、应用示例
#只打印第2行
sed -n 2p nginx.log#只打印第1行和第3行
sed -n 1p;3p nginx.log#只打印包含Error的行
sed -n /Error/p nginx.log#只打印奇数行
sed -n 1~2p nginx.log#只打印偶数行
sed -n 2~2p nginx.log#只打印第1行和第3行-e实现多次文件编辑动作
sed -n -e 1p -e 3p nginx.log#使用sed_cmd.list文件里的匹配条件和动作去编辑文件
sed -n -f sed_cmd.list nginx.log#取反显示输出除了第2行以外的其他所有行
sed -n 2!p nginx.log#查看内容属于第几行
sed -n /Error/ nginx.log#替换每行的第一个匹配上的xmx为Xmx
sed -i s/xmx/Xmx/ jvm.conf#替换文件中所有的xmx为Xmx
sed -i s/xmx/Xmx/g jvm.conf#替换第2行的首个xmx为Xmx
sed -i 2s/xmx/Xmx/# jvm.conf#替换每行的第2个xmx为Xmx
sed -i s/xmx/Xmx/2 jvm.conf#替换第3行的第2个xmx为Xmx
sed -i 3s/xmx/Xmx/2 jvm.conf#指定第2行的下一行新增内容test
sed -i 2a\test jvm.conf#指定1~3行每行的下一行都增加内容test
sed -i 1,3a\test jvm.conf#指定第2行新增内容test
sed -i 2i\test jvm.conf#指定1~3行都增加内容test
sed -i 1,3i\test jvm.conf#删除第2行
sed -i 2d jvm.conf#删除第1~3行
sed -i 1,3d jvm.conf#替换第2行内容为test
sed -i 2c\test jvm.conf#替换第1~3行为1行内容为test
sed -i 1,3c\test jvm.conf#将第2行替换为1.txt的文件内容
sed -i 2r 1.txt jvm.conf#将第2行内容保存到1.txt中
sed -i 2w 1.txt jvm.conf#将第1~3行内容保存到1.txt中
sed -i 1,4w 1.txt jvm.conf#查看匹配的内容
sed -n /send/p nginx.conf#查看匹配内容到第8行的内容
sed -n /send/,8p nginx.conf#查看第1行到匹配行的内容
sed -n 1,/send/p nginx.conf#查看匹配内容和后三行的内容
sed -n /send/,3p nginx.conf#通过!p去除空行匹配
sed -n /^$/!p nginx.conf三、awk文本分析awk认为文件中的每一行是一条记录记录与记录的分隔符为换行符每一列是一个字段字段与字段的分隔符默认是一个或多个空格或tab制表符。它的工作方式是逐行读取文本数据将每一行数据视为一条记录record每条记录以字段分隔符分成若干字段然后输出各个字段的值。然后以查找匹配某个特定模式的文本行并对这些文本执行制定动作。简单来说就是按 “行” 和 “字段” 分割文本默认空格 / 制表符为分隔符支持条件判断、计算、统计适合处理日志、CSV 等结构化数据。1、命令格式awk [参数] [动作] [文件名]awk [参数] –f 动作文件 varvalue [文件名]awk [参数] BEGIN段 [动作] END段 [文件名]BEGIN: 在开始处理数据流之前执行可选项动作: 如何处理数据流必选项END: 处理完数据流后执行可选项2、常见参数-F指定列的分隔符默认一行数据的列分隔符是空格-ffile 指定读取程序的文件名-vvarvalue 自定义变量3、常见动作print显示内容$0显示当前行所有内容$n显示当前行的第n列内容如果存在多个$n它们之间使用逗号隔开4、常见内置变量FILENAME当前输入文件的文件名该变量是只读的NR指定显示行的行号FNR多文件时候分别计数NF表示字段数量OFS输出格式的列分隔符缺省是空格FS输入文件的列分隔符缺省是连续的空格和TabRS输入记录分隔符,指定输入时的换行符,原换行符($)仍有效ORS输出记录分隔符,输出时用指定符号代替换行符ARGC|ARGV[n]获取命令的参数个数|参数内容5、应用示例
#打印第1列的内容
awk {print $1} info.csv#打印第3列内容
awk {print $3} info.csv#打印最后一列信息
awk {print $NF} info.csv#打印所有内容
awk {print $0} info.csv#打印第列和第3列内容
awk {print $1,$3} info.csv#打印信息时候合并信息
awk {print $1$3} info.csv#使用\t实现内容的分割需要用扩住
awk {print $1\t$3} info.csv#打印指定的内容
awk {print hello awk} info.csv#打印每列的行号
awk {print NR,$0} info.csv#按照行号打印对应列的内容
awk {print NR, $NR} info.csv#指定行号打印信息
awk NR1 {print NR,$1,$3} info.csv#以逗号为列分隔符打印第2列
awk -F , {print $2} info.csv
awk -v FS, {print $2} info.csv#以冒号为列分隔符打印第1列和第2列
awk -F , -v OFS: {print $1,$2} info.csv
awk -F, BEGIN{OFS:} {print $1,$7} info.csv#在BEGIN内部同时实现多个环境变量
awk BEGIN{-F,;OFS:} {print $1,$7} info.csv#设置变量字符串赋值并输出变量值
awk BEGIN{nametest;print name}#设置变量数字赋值并输出变量值
awk BEGIN{i10;print i1}#数值运算
awk BEGIN{print 1003}
awk BEGIN{print 100*3}
awk BEGIN{print 100/3}#逻辑运算输出真假即1、0
awk BEGIN{print 1002 1003 }
awk BEGIN{print 1002 1100 }
awk BEGIN{print 1002 || 1100 }
awk BEGIN{print 100200 || 1100 }#文件参与的逻辑运算输出uid为0或大于1000的用户名
awk -F: $30 || $31000 {print $1} /etc/passwd附正则表达式在 Linux 中正则表达式Regular Expression简称 regex是一种用于 模式匹配与文本过滤 的工具广泛结合 grep、sed、awk 等文本处理命令使用用于精准查找、替换或提取符合规则的字符串。1、正则表达式的分类Linux 中核心两类Linux 工具对正则表达式的支持分为 基础正则表达式BRE 和 扩展正则表达式ERE主要区别在于对部分元字符的支持是否需要转义基础正则BREgrep默认、sed默认等工具支持部分元字符如 、?、|需要用 \ 转义才能生效。扩展正则EREgrep -E或 egrep、sed -r、awk 等工具支持元字符无需转义直接使用。2、常用基础元字符与示例BRE 和 ERE 通用无需转义元字符作用示例^匹配行首以指定字符开头的行grep ^root /etc/passwd → 匹配以 root 开头的行$匹配行尾以指定字符结尾的行grep bash$ /etc/passwd → 匹配以 bash 结尾的行.匹配任意单个字符除换行符grep r..t /etc/passwd → 匹配 r 开头、t 结尾中间 2 个任意字符的字符串如 root、rxtt*匹配前面的字符 0 次或多次grep ro*ot test.txt → 匹配 r 后接任意个 o 再跟 ot如 rot、root、rooot[]匹配字符集中的任意一个字符grep [0-9] test.txt → 匹配包含数字的行grep [a-zA-Z] → 匹配包含字母的行[^]匹配 不在 字符集中的任意一个字符取反grep [^0-9] test.txt → 匹配不包含数字的行grep ^[^#] config.conf → 匹配非注释行非 # 开头\转义字符将特殊字符视为普通字符grep a\*b test.txt → 匹配字符串 a*b* 被转义为普通字符3、常用扩展元字符ERE 直接用BRE 需转义为 \、\? 等元字符作用示例以 ERE 为例匹配前面的字符 1 次或多次grep -E root test.txt → 匹配 r 后接至少 1 个 o 再跟 ot如 root、rooot不匹配 rot?匹配前面的字符 0 次或 1 次grep -E ro?ot test.txt → 匹配 r 后接 0 个或 1 个 o 再跟 ot如 rot、root不匹配 rooot()分组将多个字符视为一个整体grep -E (ab) test.txt → 匹配 ab 连续出现 1 次或多次如 ab、abab逻辑 “或”匹配多个模式中的一个{n}匹配前面的字符 恰好 n 次grep -E o{2} test.txt → 匹配包含连续 2 个 o 的字符串如 oo、root 中的 oo{n,}匹配前面的字符 至少 n 次grep -E o{2,} test.txt → 匹配包含连续 2 个及以上 o 的字符串如 oo、ooo4、不同工具中的正则使用差异grep默认使用 BRE扩展元字符需转义如 grep ro\ot加 -E 选项启用 ERE如 grep -E root无需转义。sed默认使用 BRE如 sed s/ro\ot/xxx/加 -r 选项启用 ERE如 sed -r s/root/xxx/。awk本身支持 ERE无需转义如 awk /root/ test.txt。