bash之sed与awk初步

By | 03月11日
Advertisement

bash编程之sed:
grep, sed, awk

sed: Stream EDitor,行编辑器

sed /pattern/
p:print sed先读入到模式空间再看是否匹配 默认显示模式空间 故p命令匹配模式的内容都显示了两次

sed [options] "script" FILE1 ...

例子:sed -n "/^#/p" /etc/fstab

选项:
-n: 静默模式,即不输出模式空间中的内容;
-e: 指定在一个sed命令中使用多个script,格式为-e 'script1' -e 'script2' ...
-i: 直接修改原文件;
-r: 支持使用扩展正则表达式元字符;
-f /path/to/sed_script: 从文件中读取处理脚本,并执行; sed脚本内容不写#! /bin/bash 内容也无需加引号

sed地址定界:
start_line,end_line: 例如1,7p;9,10p 命令间分号隔开 也可以-e分开
start_line,/pattern/: 例如3,/^#/ 到模式第一次匹配为止
/pattern/: 仅匹配被模式到的行;

基本正则表达式:
.
[]:
[0-9], [[:digit:]]
[a-z], [[:lower:]] grep时 a-z不区分大小写需用upper lower 区分 sed区分
[A-Z], [[:upper:]]
[a-zA-Z], [[:alpha:]]
[a-zA-Z0-9], [[:alnum:]]
[[:space:]], [[:punct:]]
[^]
\{m,n\}
\{m\} m次
\{m,\} 至少m次
\{0,n\} 至多n次
*
\?

^
$

\<, \b
\>, \b

\(\), \1, \2, ... 分组及引用

扩展正则表达式:
.
[]:
[0-9], [[:digit:]]
[a-z], [[:lower:]]
[A-Z], [[:upper:]]
[a-zA-Z], [[:alpha:]]
[a-zA-Z0-9], [[:alnum:]]
[[:space:]], [[:punct:]]
[^]
{m,n} 不用加反斜线
*
?
+ 1次或多次
| 或者

(), \1, \2 分组

^
$

\<, \b
\>, \b

sed的常用编辑命令:
p: 打印
d: 删除 删除非#行 与p打印#开头的行效果同
a \text:在符合条件的行后面添加指定的内容;在的添加的内容中间使用“\n”能够完成多行附加;
i \text:在符合条件的行前面添加指定的内容;在的添加的内容中间使用“\n”能够完成多行附加;
c \text: 将符合条件的行替换为指定的文本;
r /path/to/somefile: 在符合条件的位置读入指定的文件;
w /path/to/somefile: 将符合条件的行保存至指定文件中;
=: 显示匹配到的行的源文件行号; 行号默认换行显示

[email protected]要查找的内容@替换为的内容@:
要查找的内容:可以使用模式
替换为的内容:不可以使用模式,但可以引用, &

标志位:
i: 忽略大小写
g:全局替换 一行中匹配多次均替换

t, T, n, N, x, h, H, g, G

awk的基本用法:nawk
报告生成工具

GNU: gawk

awk [options] '/pattern/{action}'

模式:
pat1,pat2
/pattern/
expression 与sed不同的
>, <, >=, <=, ==, !=, ~ 如$3 > 500
BEGIN 前置显示内容
END 后置显示内容

action:
print
printf

选项:
-F: 指定分隔符

内置变量,
NF: Number of Field 字段数
NF=7
$NF=$7 无论哪行$NF均为最后一个字段

例子:

awk -F : ' $3>500 {print$1,$3}BEGIN{print "username uid"} ' /etc/passwd

-F与分隔符间空格可有可无 ‘’中除print前空格外各种空格均可无

Similar Posts:

  • Linux_note 命令grep,sed,awk

    1.grep 过滤出指定的行 grep [-cinvABC] 'word' filename --color 把匹配到的关键词用红色标识 如:# grep --color 'root' /etc/passwd -c :打印符合要求的行数 -i :忽略大小写 -n :在输出符合要求的行的同时连同行号一起输出 -v :打印不符合要求的行# cg -v 'root' 1.txt -A :后跟一个数字(有无空格都可以),例如 朅2则表示打印符合要求的行以及下面两行 # cg -A 2 -n 'root'

  • shell字符串操作总结(注重:cut,sed、awk、grep)

    shell字符串操作总结(注重:cut,sed.awk.grep) cut是以每一行为一个处理对象的,这种机制和sed是一样的.(关于sed的入门文章将在近期发布) 2 cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢? cut命令主要是接受三个定位方法: 第一,字节(bytes),用选项-b 第二,字符(characters),用选项-c 第三,域(fields),用选项-f 3 以"字节"定位,给个最简单的例子? 举个例子吧,当你执行ps命令时,会输出类

  • sed,grep,awk是三个很实用的文字处理命令

    sed,grep,awk是三个很实用的文字处理命令,他们能和正则表达式能够很多的结合,让你的脚本搜索显现出强大的能力. 1. 正则表达式: 常用的元字符 . 匹配除换行符以外的任意字符 w 匹配字母或数字或下划线或汉字 s 匹配任意的空白符 d 匹配数字 b 匹配单词的开始或结束 以上元字符字母变为大写想反匹配 ^ 匹配字符串的开始 $ 匹配字符串的结束 [^x] 匹配除了x以外的任意字符 [^aeiou] 匹配除了aeiou这几个字母以外的任意字符 常用限定符 * 重复零次或更多次 + 重复一

  • sed及awk使用详解

    sed及awk简单使用 sed简单使用 1.删除第一行内容. sed '1d' file.txt 2.删除第1,2行内容. sed '1,2d' file.txt 3.将1,7行内容中含有redhat的单词替换为suse. sed '1,7s/redhat/suse/' file.txt 4.在file.txt文件中的第7行下添加oracle单词 sed "7aoracle" file.txt 5 在file.txt文件中的第7行上添加oracle单词 sed "7iorac

  • Sed与awk(第二版)

    Sed与awk(第二版) 市场价: ¥55.00 4-5星会员: ¥41.25 返41分 1-3星会员: ¥42.90 返42分 普通会员: ¥44.00 返44分 [购买] [借阅] [团购] [收藏|查看] 您的购物车 希望对您有帮助 您曾浏览过的商品 | 查看藏书阁 博文视点三周年庆典,购书即送背包! 侯捷 Effective C++ 7折 china-pub考研图书7折! 原版计算机图书1折起! 购典藏原版丛书赠原版图书 计算机经管最新特价图书! 本站团购热线:86-010-883790

  • grep、sed和awk命令使用的基本元字符

    vi.ex.grep.egrep.sed.awk.gawk的基本元字符集及含义 元字符 功能 ^ 只匹配行首.注:当^用在[]中时,意指否定或不匹配括号里内容. $ 只匹配行尾. * 一个单字符后紧跟*,匹配0个或多个此单字符. [] 匹配[]内字符.可以是一个单字符,也可以是字符序列(要与*结合). 可以使用"-"表示[]内字符序列范围,如[1-8]或[a-z]. [^] 匹配一个不在范围内的字 [^A-Z]ove 匹配第一个字符不是从A到Z中的一个, 后面跟着ove的所有字符 \

  • Sed和AWK入门教程之AWK篇

    AWK是一门专门用于文本处理的编程语言.是的,它是编程语言,它的目的仅有文本处理,所以你不能用它写系统软件,或者做科学计算(当然,它也能做数学计算),它只能用于文本处理.与sed不同,AWK具有编程语言的特性,有内置函数,有逻辑语句,有输入输出语句,其实它看起来很像C语言,只不过所有功能集中于文本处理. 与Sed不同,AWK最强大的功能在于处理结构化的文本,也就是说文本有一定的组织结构的. 命令格式 awk [-F value] [-v var=value] 'program text' [fi

  • 某网友总结的grep、sed、awk、perl等对正则表达式的支持的差别,谁给贴个网址

    某网友总结的grep.sed.awk.perl等对正则表达式的支持的差别,谁给贴个网址前几天某个帖子里哪位版主给贴了一个,当时在单位看的,也忘了做个标记,现在找了半天也没找到 grep 2.5.1egrep 2.5.1sed 3.02 sed 4.07awk 3.1.1perl 5.8.0vim 6.1JavaScript ??转义\\\行头^^^^^^^行尾$$$$$$$n个 {n} {m,n} {m,} {,n}{n}{n}{n}{n}或{n} 仅定义 Cposix ? –re-interv

  • grep、sed、awk、head、tail、gsub、sub

    Awk.sed与grep,俗称Linux下的三剑客,它们之前有很多相似点,但是同样也各有各的特色,相似的地方是它们都可以匹配文本,其中sed和awk还可以用于文本编辑,而grep则不具备这个功用. grep搜索 sed 修改和编辑文本文件中某些行 awk 是访问文本文件,操纵文本文件中某些数据 三者都不能后面直接接文件名 grep 文件名 sed 文件名 awk文件名 只有如下才行,才会显示内容 grep 关键字 文件名 sed -n '行数p' 文件名 awk '{print}' 文件名 gr

  • 《Sed 和 Awk》(第二版)学习系列之第二章

    1.sed和awk二者的共同点: 都使用相似的语法来调用(均起源于ed行编辑器) 都是面向字符流,均是从文本文件中一次一行地读取输入,并将输出直接送到标准输出端 均使用正则表达式进行模式匹配 允许用户在脚本中指定指令 (1)命令行语法: sed和awk有一个相同的选项-f,主要是用来指定脚本文件的名字. (2)工作方式: 程序每次从输入文件中读取一个输入行,生成输入行的备份,然后对备份文件执行脚本中指定的指令,因此对输入行所做的修改不会真正地影响输入文件. (3)在sed和awk中,每个指令均包

Tags: