• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > Shell脚本学习指南之查找与替换介绍

Shell脚本学习指南之查找与替换介绍

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了Shell脚本学习指南之查找与替换介绍等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

3.1 查找文本
grep:使用POSIX定义的基本正则表达式(BRE)。
egrep:使用扩展正则表达式(ERE)。
fgrep:快速grep。使用优化的算法,匹配固定字符串而非正则表达式。

1992 POSIX标准将这三个改版整合成一个grep程序。

$ who | grep -F austen
使用-F选项查找固定字符串。事实上,只要匹配的模式里未含有正则表达式的meta字符,
则grep默认行为模式就等同于使用了-F。

3.2.6 在文本文件里进行替换
一般来说,执行文本替换的正确程序应该是sed - 流编辑器。
sed 's/:.*//' /etc/passwd |     删除第一个冒号之后的所有东西
sort -u   排序列表并删除重复部分

任何可显示的字符都能作为定界符。

用-e和-f选项,不用将多个sed通过管道串起来,就可以一次替换多个。

3.2.8 sed的运作
命令行上的每个文件名会依次打开与读取。如果没有文件,则使用标准输入。
sed读取每个文件,一次读一行,将读取的行放到内存的一个区域(模式空间)。
所有编辑上的操作都会应用到模式空间的内容,当所有操作完成后,sed会将模式
空间的最后内容打印到标准输出,再回到开始处,读取另一个输入行。

3.3 字段处理
用空格(制表符)或特定的定界符(如冒号)。
#字符起始的行表示注释,软件必须可忽略这样的行才行。

以定界符分隔字段的最好例子就是/etc/passwd了:一行表示一个用户,每个字段以冒号隔开。
该文件含有7个字段:
tolstoy:x:2076:10:Leo Tolstoy:/home/tolstoy:/bin/bash
1.用户名称:2.加密后密码:3.用户ID:4.用户组ID:5.姓名:6.根目录:7.登录的Shell。

3.3.2 使用cut选定字段

3.3.3 使用join连接字段
以一个共同的键值(主字段)将多个文件结合在一起。
$ cat sales
#业务员 数据量
joe     100
jane    200
herman 150
chris    300

$ cat quotas
#业务员 配额
joe     50
jane    75
herman 80
chris    95

3.3.4 使用awk重新编排字段

awk程序基本架构:pattern { action }
pattern通常是由斜杠括起来的ERE,action通常是一个明了的print语句。
省略pattern则会对每一条输入记录执行action,省略action则等同于{ print }。

awk自动将各个记录分为字段,并将每条记录内字段数目存储到内建变量NF。
默认以空白分隔,还可以将FS变量设置为一个不同的值。$加数字表示字段值。
awk '{ print $1 }'               打印第1个字段
awk '{ print $2, $5 }'          打印第2与第5个字段
awk '{ print $1, $NF }'        打印第一个与最后一个字段
awk 'NF > 0 { print $0 }'     打印非空行
awk 'NF > 0'                     同上

awk -F : '{ print $1, $5 }' /etc/passwd     设置字段分隔字符,-F选项自动设置FS变量。
root root
...
tolstoy Leo Tolstoy

记得在print的参数间用逗号隔开,否则awk将连接相邻的所有值。
awk -F: '{ print "User" $1 "is really" $5 }' /etc/passwd
Userrootis reallyroot
...
Usertolstoyis reallyLeo Tolstoy

</div>

您可能想查找下面的文章:

相关文章

  • Shell脚本实现删除一年前文件功能分享
  • 浅谈:linux cron 计划任务常用符号小结
  • Shell脚本自动备份MySQL到FTP并定期清理过期备份
  • 分享一个入门级可控多线程shell脚本代码
  • shell遍历目录处理特定目录的脚本代码
  • Linux中获取某个进程的系统调用以及参数(故障排查案例)
  • 创建Linux系统服务的方法
  • Bash Shell中Shift用法分享
  • linux shell中 if else以及大于、小于、等于逻辑表达式介绍
  • 脚本实现SSH登录邮件报警

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • vtune自动安装脚本分享
    • shell脚本编程之if语句学习笔记
    • 一天一个shell命令 linux文本操作系列-tree命令详解
    • 详谈Linux开发中常见段错误问题的原因及分析
    • 用Shell判断字符串包含关系的方法小结
    • Shell中if的基本语法和常见判断用法
    • 详解Linux下的sudo及其配置文件/etc/sudoers的详细配置
    • awk中RS、ORS、FS、OFS的区别和联系小结
    • awk中让人郁闷的system()函数
    • 一键备份gitolite服务器的Shell脚本

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有