linux命令行与shell脚本大全_第十八章_初识sed和gawk
2017-04-09 16:48
585 查看
1.sed语法
例子:
(1)从stdout流中读取数据
echo "This is a test" | sed 's/test/big test/'
(2)执行多条命令,-e选项,命令用分号隔开,封号前面不能有空格
echo "This is a test" | sed -e 's/test/big test/;s/This/That/'
(3)命令和多可以采用-f选项将命令放在文件中,每一行一个命令
sed -f command.txt filename
2.gawk基本语法
gawk,可以使用多条命令,命令之间用封号分开:
例子:替换第4个字段
echo "My name is Rich" | gawk '{$4="Christine" ;print $0}'
My name is Christine
ctrl+d :产生一个eof 符,可以结束gawk命令的输入
gawk字段变量的使用:
采用-F手动指定分割符,想使用单词,或单词间有空格请用""引起来,否则会报错
gawk -F: '{print $1}' /etc/passwd
gawk读取文件中命令:
gawk:引用变量无需使用$符
gawk采用BEGIN关键字,执行处理数据之前的脚本,END关键字处理数据处理完的情形.重复使用会产生累加效果。
echo "My name is Rich" | gawk 'BEGIN{print "The gawk test"}END{print "This is end"}{$4="Christine" ;print $0}'
3.sed替换标记
4.sed的替换字符:当遇到需要转义的字符,可以用!等符号作为/的替换,甚至可以用数字,不过使用了文本中这些符号如果要使用同样要转义。。。转义数字?
4.使用地址
sed的作用范围是全体内容,有时只想操作指定内容,这样就需要指定范围。
寻址方式:
1.数字方式寻址
(1)指定行数:sed '1s/brown/blue/' sed_data.txt替换第一行
(2)指定行范围:sed '2,3s/brown/yellow/' sed_data.txt 替换2-3行
(3)使用$符号,统配到文章末尾:sed '2,$s/brown/yellow/' sed_data.txt 替换第2到文本末尾
2.使用文本模式过滤
sed '/quick1/s/brown/yellow/' sed_data.txt 过滤有quick1的文本
3.组合命令
sed '2{s/brown/bluely/
s/fox/dog/
}' sed_data.txt
5.删除行
(1)删除全部 :sed 'd' sed_data.txt
(2)删除指定行:sed '2d' sed_data.txt 删除第二行
(3)删除指定范围:sed ‘2,3d’ sed_data.txt 删除第二和第三行
(4)删除指定行到末尾:sed '2,$d' sed_data.txt 删除第二到末尾
(5)通过模式进行删除:sed '/1/,/2/d' sed_data.txt 删除文本第一次出现1直到出现2结束(删除的包括2)如果没匹配到2,则会删除1后面匹配的所有行
6.插入和追加
追加命令用a:在匹配的后面加上新的一行
插入命令用 i:在匹配的前面插入一行
7.修改行
sed '3c\this is a changed line of text.' sed_data.txt 替换第3行
sed '2,3c\this is a changed line of text.' sed_data.txt 把第2和第3行替换
8.转换字符
echo "This 1 is a test of 1 try"|sed 'y/123/456/' 替换1为4
9.回顾打印
(1)sed '/hello/p' sed_data.txt 打印匹配到的hello
(2)sed -n '/hello/p' sed_data.txt -n 禁止打印非匹配的行
(3)sed -n '/hello/l' sed_data.txt l可以打印非可见字符
(4)sed -n '/hello/=' sed_data.txt 打印行号
10.文件操作
(1)写文件
sed '1,2w 123' sed_data.txt 写入到文件123中
(2)读文件
sed '/12/r 123' sed_data.txt 读取123文件中匹配12的到sed_data.txt中
例子:
(1)从stdout流中读取数据
echo "This is a test" | sed 's/test/big test/'
(2)执行多条命令,-e选项,命令用分号隔开,封号前面不能有空格
echo "This is a test" | sed -e 's/test/big test/;s/This/That/'
(3)命令和多可以采用-f选项将命令放在文件中,每一行一个命令
sed -f command.txt filename
2.gawk基本语法
gawk,可以使用多条命令,命令之间用封号分开:
例子:替换第4个字段
echo "My name is Rich" | gawk '{$4="Christine" ;print $0}'
My name is Christine
ctrl+d :产生一个eof 符,可以结束gawk命令的输入
gawk字段变量的使用:
采用-F手动指定分割符,想使用单词,或单词间有空格请用""引起来,否则会报错
gawk -F: '{print $1}' /etc/passwd
gawk读取文件中命令:
gawk:引用变量无需使用$符
gawk采用BEGIN关键字,执行处理数据之前的脚本,END关键字处理数据处理完的情形.重复使用会产生累加效果。
echo "My name is Rich" | gawk 'BEGIN{print "The gawk test"}END{print "This is end"}{$4="Christine" ;print $0}'
3.sed替换标记
4.sed的替换字符:当遇到需要转义的字符,可以用!等符号作为/的替换,甚至可以用数字,不过使用了文本中这些符号如果要使用同样要转义。。。转义数字?
4.使用地址
sed的作用范围是全体内容,有时只想操作指定内容,这样就需要指定范围。
寻址方式:
1.数字方式寻址
(1)指定行数:sed '1s/brown/blue/' sed_data.txt替换第一行
(2)指定行范围:sed '2,3s/brown/yellow/' sed_data.txt 替换2-3行
(3)使用$符号,统配到文章末尾:sed '2,$s/brown/yellow/' sed_data.txt 替换第2到文本末尾
2.使用文本模式过滤
sed '/quick1/s/brown/yellow/' sed_data.txt 过滤有quick1的文本
3.组合命令
sed '2{s/brown/bluely/
s/fox/dog/
}' sed_data.txt
5.删除行
(1)删除全部 :sed 'd' sed_data.txt
(2)删除指定行:sed '2d' sed_data.txt 删除第二行
(3)删除指定范围:sed ‘2,3d’ sed_data.txt 删除第二和第三行
(4)删除指定行到末尾:sed '2,$d' sed_data.txt 删除第二到末尾
(5)通过模式进行删除:sed '/1/,/2/d' sed_data.txt 删除文本第一次出现1直到出现2结束(删除的包括2)如果没匹配到2,则会删除1后面匹配的所有行
6.插入和追加
追加命令用a:在匹配的后面加上新的一行
插入命令用 i:在匹配的前面插入一行
7.修改行
sed '3c\this is a changed line of text.' sed_data.txt 替换第3行
sed '2,3c\this is a changed line of text.' sed_data.txt 把第2和第3行替换
8.转换字符
echo "This 1 is a test of 1 try"|sed 'y/123/456/' 替换1为4
9.回顾打印
(1)sed '/hello/p' sed_data.txt 打印匹配到的hello
(2)sed -n '/hello/p' sed_data.txt -n 禁止打印非匹配的行
(3)sed -n '/hello/l' sed_data.txt l可以打印非可见字符
(4)sed -n '/hello/=' sed_data.txt 打印行号
10.文件操作
(1)写文件
sed '1,2w 123' sed_data.txt 写入到文件123中
(2)读文件
sed '/12/r 123' sed_data.txt 读取123文件中匹配12的到sed_data.txt中
相关文章推荐
- Linux学习-高级shell脚本编程(二)初识sed和gawk
- Linux命令shell脚本编程学习笔记-18章初识sed和gawk
- linux命令行与shell脚本大全_第五章_使用环境变量
- linux命令行与shell脚本大全_第六章_权限_理解文件权限
- Linux命令行与shell脚本(15)--sed使用
- Liunx 命令行与shell脚本编程大全 第八章学习笔记(Linux系统的包管理基础)
- Shell脚本高级编程 一 初识sed和gawk
- linux命令行与shell脚本大全_第十五章_控制脚本
- linux命令行与shell脚本大全_第十六章_创建函数
- linux命令行与shell脚本大全_第十三章_处理用户输入
- Linux命令行与shell脚本(16)--gawk使用
- linux命令行与shell脚本大全_第十章_构建基本脚本
- linux命令行与shell脚本大全_第十四章_呈现数据
- linux命令行与shell脚本大全_第六章_权限_账户和用户组介绍
- linux命令行与shell脚本大全_第十九章_正则表达式
- Linux命令行与shell脚本编程-part1-基本bash shell命令
- Linux命令行与shell脚本(6)--软件包安装
- Linux命令行与shell脚本(8)--结构化命令
- Linux的shell脚本grep、sed、awk练习和diff、patch、cut、sort介绍
- 【Linux命令行与shell脚本编程】教程一——进入命令行界面