0904 (安装nginx,cut sort grep sed awk 指令)

本文深入讲解了Linux系统中常用的命令,包括tar、cut、sort、wc、grep、sed、awk等,详细介绍了这些命令的功能、参数及实际应用场景,是Linux系统管理和文本处理的实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过tar 方式安装nginx   指令更改配置 路径信息./configure --prefix=/opt/nginx --with-http_ssl_module --with-http_gzip_static_module --error-log-path=/var/log/nginx/nginx.log --pid-path=/var/log/nginx/pid

make 指令进行编译   make install 安装  通过 nginx下的sbin/nginx 启动nginx 网页访问虚拟机地址即可在页面上看到nginx的前端展示

cut 指令 

   可以实现对文件的分割 cut -d ":" -f-2 文件名 -d "" 以什么方式分割 -f-2 输出分割后的第几列 

   cut -d ":" -f3-5 passwd 输出3到5列 

   cut -d ":" -f3-5 --output-delimiter=".." passwd 将源文件的分割符换成.. 然后在输出

   cut -s -d ":" -f1,3,7 可以排除没有分割符的 数据 (排除脏数据) 打印1,3,7列

sort 指令

   对文件实现排序功能

   sort a.txt 默认对文件每行字典排序

   sort -t ' :' -k3 passwd  -t 按什么字符分割  -k 分割后第几个字段去按照字典排序

   sort -t ' :' -k3 passwd -n   -n是指按数值排序

   -r  倒序

wc指令

  -l 统计文本行数 -w输出单词统计数 -c字符统计数

grep指令

  搜索文本中的字符

  grep "a.re"  hello.txt   可以使用正则进行匹配搜索字符

  grep “\<are\>” hello.txt   匹配单词    grep "\<are" hello.txt  匹配单词开头   “ok\>” 匹配单词词尾

   grep -E   使grep处于扩展模式下 正则匹配 如? + { 等时 不用加\ 去转译

sed指令

   sed -i “1a/hello world/” hello.txt  -i 指修改文件 1a 在第一行后插入一行 hello world

   sed -i ”2d“ hello.txt 删除第二行 ”d“ 删除全部

   sed  -n ”/[0-9]/p “ hello.txt  -n指 只打印正则匹配到的行的数据 p在控制台回显  

   sed  "s/\(id:\)[0-6]\(:initdefault:\)/\15\2/"  inittab  s替换  s/x/y/p     x正则需要被替换的内容 y用y去替换x   p回显指令  \1第一个反    向引用 \(id:\) 

awk指令

   是一个更强大的文本分析工具,可以使用函数

   awk -F ':' '{print $1}' passwd  -F按照":"分割文件 然后打印第一列

   awk 'NR==1' passwd 打印第一行

   awk '/root/{print $0}' passwd 搜索打印出有root关键字的所有行中的数据

   awk -F ":" 'BEGIN{print "shell,name"; print $1 "," $7}END{print "blue,/root/bin"}' passwd  BEGIN在所有开始行前显示 END在所有行的末端显示  $1 "," $7 实现了第一列和第七列拼接在一起 完成了字符串的拼接

  • 统计报表:合计每人1月工资,0:manager,1:worker
    • Tom  0   2012-12-11      car     3000
    • John  1   2013-01-13      bike    1000
    • vivi  1   2013-01-18      car     2800
    • Tom  0   2013-01-20      car     2500
    • John  1   2013-01-28      bike    3500

awk '{split($3,data,"-");

if(data[2]=="01"){

name[$1]+=$5;

if($2=="0") {

role[$1]="Manager"

}else{

role[$1]="Worker"

}}

}

END{ for(i in name){print i"\t"name[i]"\t"role[i]

}}' awk.txt

 

ps: 安装rpm包 rpm -ivh xxx.rpm

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<think>好的,用户想了解sedawk之间的区别及使用场景。首先,我需要回忆一下这两个工具的基本功能和他们各自的特点。根据之前提供的引用资料,比如引用[3]提到grep擅长查找,sed擅长修改,而awk擅长数据切片和格式化,这应该是一个好的切入点。 首先,我应该明确sedawk的不同设计目标。sed主要是流编辑器,用于对文本进行逐行处理,执行替换、删除、插入等操作。而awk更偏向于编程语言,能够处理结构化的文本数据,比如按列处理。用户可能需要具体的例子来理解两者的差异,比如替换文本中的字符串,用sed可能更直接,而处理表格数据用awk更方便。 然后,我需要考虑用户可能的实际使用场景。例如,用户可能需要进行批量文本替换,这时候sed更合适;或者需要处理日志文件,提取特定列的数据,这时候awk会更高效。引用[4]中提到的提取文件指定行之间的代码的例子,结合了awksed,说明两者可以互补使用。 接下来,用户可能想知道性能方面的差异,但根据已有的资料,没有直接提到性能比较,可能需要避免猜测。不过可以提到sed在处理简单替换时更高效,而awk在处理复杂数据时更灵活。 另外,语法结构的不同也很重要。引用[2]中提到了awk的结构,包括BEGIN和END块,而sed通常是一行命令。这可以作为两者的另一个区别点。 还要注意用户可能混淆两者的功能,比如用awk做替换或用sed处理列数据,这时候需要指出各自的强项。例如,虽然sed可以处理行内的模式,但awk的字段分割功能更适合列处理。 最后,总结两者的主要区别,强调sed适合行级文本编辑,而awk适合结构化数据处理,并给出典型的使用场景,帮助用户根据需求选择合适的工具。同时,可能需要生成相关问题,比如如何选择工具,或者两者结合使用的例子,但根据用户的问题,可能只需要专注于区别和场景。</think>### sedawk的区别及使用场景分析 --- #### **核心区别对比表** | 特性 | sed (流编辑器) | awk (文本分析器) | |-----------|--------------|----------------| | 设计定位 | 文本流编辑 | 结构化数据处理 | | 处理单位 | 按行处理 | 按列/字段处理 | | 编程能力 | 简单命令模式 | 完整编程语言支持 | | 典型场景 | 替换/删除/插入 | 数据提取/格式转换/统计 | | 正则表达式复杂度 | 基础正则语法 | 支持扩展正则表达式 | | 字段处理能力 | 弱(需手动分割) | 强(自动字段分割) | --- #### **详细区别说明** 1. **设计目标差异** - **sed**:专注于*流式文本编辑*,设计用于执行`过滤-处理-输出`的线性工作流。例如批量替换文本中的字符串: ```bash sed 's/old/new/g' file.txt # 全局替换old为new[^3] ``` - **awk**:构建为*数据报表生成工具*,支持`字段分割+条件判断+数学运算`。例如计算CSV文件第二列总和: ```bash awk -F',' '{sum+=$2} END{print sum}' data.csv ``` 2. **数据处理维度** - **sed** 以*行*为处理单位,适合处理连续文本流。如删除空行: ```bash sed '/^$/d' input.log ``` - **awk** 以*字段*为处理单位,默认按空格/TAB分割列。如提取进程CPU占用: ```bash ps aux | awk '{print $3,$11}' # 显示CPU%和命令名[^5] ``` 3. **编程能力对比** - **sed** 使用受限的`命令模式`,支持基础逻辑操作: ```bash sed '/error/p; /debug/d' app.log # 打印含error的行,删除含debug的行 ``` - **awk** 提供完整的编程结构(变量/数组/函数),如统计不同状态码出现次数: ```bash awk '{status[$9]++} END{for(s in status) print s,status[s]}' access.log ``` --- #### **典型使用场景** 1. **优先使用sed的情况** - ✅ 批量替换文件内容(如版本号更新) - ✅ 删除/保留特定模式的行 - ✅ 简单文本格式调整(如行号添加) *示例*:转换Windows换行符为Unix格式 ```bash sed -i 's/\r$//' script.sh ``` 2. **优先使用awk的情况** - ✅ 表格数据提取(如日志分析) - ✅ 数据统计计算(如求平均值/总和) - ✅ 复杂格式转换(如CSV转Markdown表格) *示例*:生成Apache日志状态码分布报告 ```bash awk '{print $9}' access.log | sort | uniq -c | awk '{print "状态码",$2,"出现次数",$1}' ``` --- #### **协同工作模式** 两者常通过管道组合使用,例如提取Nginx日志中响应时间大于1秒的请求: ```bash awk '$NF > 1 {print $7}' access.log | sed 's/\?.*//' | sort | uniq -c ``` ▸ `awk`筛选慢请求并提取URL路径 ▸ `sed`去除URL参数 ▸ 最终统计高频慢接口[^4] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值