Linux的文本编辑diff & sed & awk & grep

grep(关键字: 截取) 文本搜集工具, 结合正则表达式非常强大
   主要参数 []
   -c : 只输出匹配的行
   -I : 不区分大小写
   -h : 查询多文件时不显示文件名
   -l : 查询多文件时, 只输出包含匹配字符的文件名
   -n : 显示匹配的行号及行
   -v : 显示不包含匹配文本的所有行(我经常用除去grep本身)
   基本工作方式: grep 要匹配的内容 文件名, 例如:
   grep ‘test‘ d* 显示所有以d开头的文件中包含test的行
   grep ‘test‘ aa bb cc 显示在 aa bb cc 文件中包含test的行
   grep ‘[a-z]\{5}\‘ aa 显示所有包含字符串至少有5个连续小写字母的串

awk(关键字:分析&处理) 一行一行的分析处理 awk ‘条件类型1{动作1}条件类型2{动作2}‘ filename, awk 也可以读取来自前一个指令的 standard input
   相对于sed常常用于一整行处理, awk则比较倾向于一行当中分成数个"字段"(区域)来处理, 默认的分隔符是空格键或tab键
   例如:
   last -n 5 | awk ‘{print $1 "\t" $3}‘  这里大括号内$1"\t"$3 之间不加空格也可以, 不过最好还是加上个空格, 另外注意"\t"是有双引号的, 因为本身这些内容都在单引号内
   $0 代表整行 $1代表第一个区域, 依此类推
   awk的处理流程是:
   1. 读第一行, 将第一行资料填入变量 $0, $1... 等变量中
   2. 依据条件限制, 执行动作
   3. 接下来执行下一行
   所以, AWK一次处理是一行, 而一次中处理的最小单位是一个区域
   另外还有3个变量, NF: 每一行处理的字段数, NR 目前处理到第几行 FS 目前的分隔符
   逻辑判断 > < >= <= == !== , 赋值直接使用=
   cat /etc/passwd | awk ‘{FS=":"} $3<10 {print $1 "\t" $3}‘
首先定义分隔符为:, 然后判断, 注意看, 判断没有写在{}中, 然后执行动作, FS=":"这是一个动作, 赋值动作, 不是一个判断,
所以不写在{}中
   BEGIN END , 给程序员一个初始化和收尾的工作, BEGIN之后列出的操作在{}内将在awk开始扫描输入之前执行, 而END{}内的操作, 将在扫描完输入文件后执行.
   awk ‘/test/ {print NR}‘ abc 将带有test的行的行号打印出来, 注意//之间可以使用正则表达式
   awk {}内, 可以使用 if else ,for(i=0;i<10;i++), i=1 while(i<NF)
   可见, awk的很多用法都等同于C语言, 比如"\t" 分隔符, print的格式, if, while, for 等等

awk 是相当复杂的工具, 真正使用时, 再补充吧. (有关工具的picture)

sed(关键字: 编辑) 以行为单位的文本编辑工具 sed可以直接修改档案, 不过一般不推荐这么做, 可以分析 standard input
基本工作方式: sed [-nef] ‘[动作]‘ [输入文本]
       -n : 安静模式, 一般sed用法中, 来自stdin的数据一般会被列出到屏幕上, 如果使用-n参数后, 只有经过sed处理的那一行被列出来.
       -e : 多重编辑, 比如你同时又想删除某行, 又想改变其他行, 那么可以用 sed -e ‘1,5d‘ -e ‘s/abc/xxx/g‘ filename
       -f : 首先将 sed的动作写在一个档案内, 然后通过 sed -f scriptfile 就可以直接执行 scriptfile 内的sed动作 (没有实验成功, 不推荐使用)
       -i : 直接编辑, 这回就是真的改变文件中的内容了, 别的都只是改变显示. (不推荐使用)
   动作:
   a 新增, a 后面可以接字符串, 而这个字符串会在新的一行出现. (下一行)
   c 取代, c 后面的字符串, 这些字符串可以取代 n1,n2之间的行
   d 删除, 后面不接任何东西
   i 插入, 后面的字符串, 会在上一行出现
   p 打印, 将选择的资料列出, 通常和 sed -n 一起运作 sed -n ‘3p‘ 只打印第3行
   s 取代, 类似vi中的取代, 1,20s/old/new/g

[line-address]q 退出, 匹配到某行退出, 提高效率

[line-address]r 匹配到的行读取某文件 例如: sed ‘1r qqq‘ abc , 注意, 写入的文本是写在了第1行的后边, 也就是第2行

[line-address]w file, 匹配到的行写入某文件  例如: sed -n ‘/m/w qqq‘ abc , 从abc中读取带m的行写到qqq文件中, 注意, 这个写入带有覆盖性.

Linux的文本编辑diff & sed & awk & grep

时间: 2024-12-09 02:54:15

Linux的文本编辑diff & sed & awk & grep的相关文章

linux下的文本处理命令sed&amp;awk&amp;grep

Sedsed 是个精简的.非交互式的编辑器.他能执行和编辑vi和emacs相同的编辑任务.sed编辑器不提供交互使用方式:只能在命令行输入编辑命令.指定文件名,然后在屏幕上察看输出.sed编辑器没有破坏性.他不会修改文件,除非用shell重定向来保存输出结果.缺省情况下,所以的输出都被打印到屏幕上.sed 编辑器在shell脚本中非常有用,因为在shell脚本中使用像vi或emacs这类交互式编辑器,需求脚本用户精通该编辑器,而且还会导致用户对打开 的 文件做出不必的修改.如果需要执行多项编辑任

Linux 常用命令sed/awk/grep及正则表达式

linux命令sed和awk sed 主要功能 sed,stream editor.是一个"非交互式"字符流编辑器.输入流通过程序并输出到标准输出端. sed主要用来自动编辑一个或者多个文件(替换,插入,删除,追加,更改) 常见应用 抽区域 匹配正则表达式 比较域 增加,附加,替换 执行过程 sed一次处理一行或多行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区

inux基础命令 sed awk grep 及部分快捷键

基本命令 sed      stream deitor(编辑器)   流编辑器,实现对文件的增加删除及该替换查 1.使用sed命令 进行查看 [root@VM_86_3_centos 000.txt]# seq 80 >000.txt(cat 000.txt 出现1-100数列) [root@VM_86_3_centos 000.txt]# sed -n '55,65'p 000.txt(此处可不加引号,但其他情况下不加引号可能会出错  参数 n  取消默认输出  p 打印 )555657585

sed awk grep三剑客常用

sed的常用用法: awk的常用用法: grep的常用用法: 除了列出符合行之外,并且列出后10行. grep -A 10 Exception kzfinance-front.log 除了列出符合行之外,并且列出前10行. grep -B 10 Exception kzfinance-front.log 除了列出符合行之外,并且列出前后10行. grep -C 10 Exception kzfinance-front.log 详情参考: http://blog.csdn.net/xiaokang

【转帖】vim/sed/awk/grep等文件批处理总结

https://www.cnblogs.com/cangqiongbingchen/p/9760544.html Vim相关操作 1.基础 * 和 # 对对当前光标所在的单词进行搜索 %匹配括号移动,包括 (, {, [ K 查看man手册 ga 查看ascii值 g CTRL-G 统计字数,使用Visual模式选取统计部分 q: 打开历史记录窗口 :marks 打开编辑标记窗口, `0 准确回到上一次退出vim的位置 gf 打开光标下的指定文件, CTRL-W f 在新窗口中打开 格式转换: 

python 全栈 linux基础 (部分)正则表达式 grep sed

/etc/profile /etc/bashrc  .变量添加到shell环境中,永久生效. /root/.bashrc /root/.bash_profile 正则表达式 定义:正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.(被命令所解释) 三种文本处理工具/命令:grep sed awk grep(过滤) 参数 -n  :显示行号 -o  :只显示匹配的内容 -q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容 -l

20150915 Linux 数组 sed awk

第一部分数组: bash脚本编程:     变量:变量名   ,命名的命名空间     数组:连续的多个独立内存空间:每个内存空间相当于一个变量:         数据元素的引用:数组名[索引] bash 4.0+以后版本支持二种类型:         传统数组(基本数组):索引为数字,从0开始编号:             declare -a ARRAY_NAME         关联数组:索引可以自定义,可以使用任意字符串做索引:             declare -A ARRAY_

Linux系统管理-(20)-awk

GNU awk:        文本处理三工具:grep, sed, awk        grep, egrep, fgrep:文本过滤工具:pattern        sed: 行编辑器            模式空间.保持空间        awk:报告生成器,格式化文本输出: AWK: Aho, Weinberger, Kernighan --> New AWK, NAWK GNU awk, gawk gawk - pattern scanning and processing lan

LINUX 下 find grep sed awk 的常见基本用法特点

LINUX 下 find grep sed awk 的常见基本用法特点 只为让自己具有更高的水准,这就开始了长达6个月的小白进阶路! 这几天学习linux基础命令有点犯蒙,尤其是对文件查找这块.所有我想把一些我觉得常用的实用的参数项总结下来,大神勿喷哈... 不到之处请大家指教,小女子在此谢过了. 一.find:命令用于查找文件系统中指定的文件,其命令格式为: 1.find pathname -options [ -print  -exec  -ok ... ] (1)find 命令的参数: p