Linux文本处理:sed与awk命令实用案例解析
需积分: 40 168 浏览量
更新于2024-09-12
1
收藏 44KB DOC 举报
"这篇文档提供了关于`sed`和`awk`命令在Linux或Unix环境中的使用实例,这些实例涵盖了从提取特定内容、处理文件格式、删除重复行到替换字符串等多种功能。"
`sed`和`awk`是Linux/Unix环境中非常强大的文本处理工具,它们在处理日志文件、数据过滤、文本格式转换等方面发挥着重要作用。
1. `awk '/<span class="info_powerby">{p=1;next}/<\/span>/{p=0}p' login.php`
这个命令用于在`login.php`文件中打印从`<span class="info_powerby">`开始到`</span>`之间的内容。它通过设置标志变量`p`来决定是否打印当前行。
2. `sed -i 's/^M//g' login.php`
这个命令删除`login.php`文件中的所有`^M`字符(通常由Windows换行符产生)。`^M`可以通过`Ctrl+V`然后`Ctrl+M`在键盘上输入,`-i`选项用于直接在原文件上进行修改。
3. `sed -i '1!G;h;$!d' login.php`
这个命令将`login.php`文件的内容倒序。它首先跳过第一行,然后将后续行追加到之前的内容前面,直到最后一行,然后删除所有原始行。
4. `sed -e '/test/h' -e '$G' example.txt`
这个命令将`example.txt`中包含`test`的行复制到缓冲区,然后在文件末尾添加缓冲区的内容,这样每行包含`test`的行都会被附加到文件末尾。
5. `sed -e '/test/h' -e '/check/x' example.txt`
这个命令会将包含`test`的行存储到缓冲区,然后找到包含`check`的行时,用缓冲区的内容替换这一行。
6. `awk '$1=$1' urlfile`
在`urlfile`中,这个命令将每一行的第一个字段赋值给自己,这看似无操作,但实际上强迫`awk`使用默认的输出字段分隔符重新构建整行。如果新字段分隔符(OFS)已被改变,这会确保使用新OFS。
7. `dos2unix` 命令可以用来去除从Windows上传的文件中行末的^M字符,使它们适应Unix/Linux的行结束符。
8. `awk '!a[$0]++' file` 或 `sort file | uniq`
这两个命令都是用来去除文件中的重复行。`awk`方法使用一个关联数组`a`,数组的键是行内容,值是计数。第一次遇到某行时,其值递增,之后遇到则不会增加,因此只打印不重复的行。`sort`和`uniq`组合则是先排序文件,然后去除连续重复的行。
9. `sed '/aaa/{s/111/AAA/g}' urfile1`
这个命令会在`urfile1`中查找包含`aaa`的行,并将所有出现的`111`替换为`AAA`。
解答问题:
1. 在文件`a.txt`中筛选出`login_version`的值(222222222):
使用`awk`命令可以轻松完成:
```bash
awk -F: '$1~/login_version/{print $2}' a.txt
```
或者使用`sed`:
```bash
sed -n 's/login_version:\(.*\)/\1/p' a.txt
```
2. 将文件`a.txt`中`<body>hello</body>`的`hello`替换为`hi`:
如果`hello`是独立的一行,可以使用:
```bash
sed -i 's/hello/hi/' a.txt
```
如果`hello`是在`<body>`标签内,则需要使用更复杂的正则表达式来处理HTML结构,这里通常建议使用专门的HTML解析工具,如`perl`或`python`的库。由于`sed`对HTML处理能力有限,直接替换可能会导致格式错误。
2018-05-09 上传
2024-10-27 上传
2024-10-30 上传
2024-11-06 上传
2024-10-30 上传
2024-11-07 上传
2024-11-11 上传
liuzixinlzx
- 粉丝: 0
- 资源: 1
最新资源
- JavaScript实现的高效pomodoro时钟教程
- CMake 3.25.3版本发布:程序员必备构建工具
- 直流无刷电机控制技术项目源码集合
- Ak Kamal电子安全客户端加载器-CRX插件介绍
- 揭露流氓软件:月息背后的秘密
- 京东自动抢购茅台脚本指南:如何设置eid与fp参数
- 动态格式化Matlab轴刻度标签 - ticklabelformat实用教程
- DSTUHack2021后端接口与Go语言实现解析
- CMake 3.25.2版本Linux软件包发布
- Node.js网络数据抓取技术深入解析
- QRSorteios-crx扩展:优化税务文件扫描流程
- 掌握JavaScript中的算法技巧
- Rails+React打造MF员工租房解决方案
- Utsanjan:自学成才的UI/UX设计师与技术博客作者
- CMake 3.25.2版本发布,支持Windows x86_64架构
- AR_RENTAL平台:HTML技术在增强现实领域的应用