sed和awk
2017-02-26 14:23
183 查看
备忘一下,只是最最简单的用法
gaofeng 45 56 44
cc 77 88 99
yangyang 3 4 5
gaofeng new5 56 newnew
cc 77 88 99
yangyang 3 new 5
$ sed 's/4/new/' 1.txt --不加g,只替换每行第一个4
gaofeng new5 56 44
cc 77 88 99
yangyang 3 new 5
$ sed 's/.4/&new/g' 1.txt --.4是正则表达式,&表示在4后面追加
gaofeng 4new5 56 4new4
cc 77 88 99
yangyang 3 4new 5
print语句后的多个参数,如果用逗号分割,会按照FS,即空格打印。如果没有逗号,就是多个参数之间连接。 字符串需要双引号。
也支持printf语句
$0 表示这一行的字符串 $1表示第一个字段。NF表示字段的个数,FS表示分割符,默认是空格。
NR是行号,RS是行分割符,默认是‘\n’. 分割符都是可以重新自定义的。
$ awk 'BEGIN {print "this is begin"};{print "hello,"$1}' 1.txt
this is begin
hello,gaofeng
hello,
hello,cc
hello,yangyang
$ awk 'BEGIN{RS=""}; {print NR,NF;system("date")}' 1.txt --通过system()调用shell命令,主要命令要用“”包起来。
1 4
Sun Feb 26 13:35:54 2017
2 8
Sun Feb 26 13:35:54 2017
如下例,每个段前都可以有一个条件,可以是正则表达式,也可以是类似NF<1之类。
$ awk 'BEGIN {print "this is begin"}; {print "hello,"$1};
/^\n$/ {print}; END {print "this is the END"}' 1.txt
this is begin
hello,gaofeng
hello,
hello,cc
hello,yangyang
this is the END
awk的语法类似c,也类似脚本语言。可以编写代码进行信息统计,平均成绩计算等。
$ awk 'NF>0 {print $1":"($2+$3+$4)/3}' 1.txt
gaofeng:48.3333
cc:88
yangyang:4
一、sed
sed可以删除、修改文件文件内容:
$ cat 1.txtgaofeng 45 56 44
cc 77 88 99
yangyang 3 4 5
例子1
$ sed 's/4/new/g' 1.txt --s表示替换,把字符4替换为newgaofeng new5 56 newnew
cc 77 88 99
yangyang 3 new 5
$ sed 's/4/new/' 1.txt --不加g,只替换每行第一个4
gaofeng new5 56 44
cc 77 88 99
yangyang 3 new 5
$ sed 's/.4/&new/g' 1.txt --.4是正则表达式,&表示在4后面追加
gaofeng 4new5 56 4new4
cc 77 88 99
yangyang 3 4new 5
二、awk
--awk中的脚本,必须用单引号引起来。可以有多个块,包括一个开始块,多个中间块,一个结尾块。print语句后的多个参数,如果用逗号分割,会按照FS,即空格打印。如果没有逗号,就是多个参数之间连接。 字符串需要双引号。
也支持printf语句
$0 表示这一行的字符串 $1表示第一个字段。NF表示字段的个数,FS表示分割符,默认是空格。
NR是行号,RS是行分割符,默认是‘\n’. 分割符都是可以重新自定义的。
$ awk 'BEGIN {print "this is begin"};{print "hello,"$1}' 1.txt
this is begin
hello,gaofeng
hello,
hello,cc
hello,yangyang
$ awk 'BEGIN{RS=""}; {print NR,NF;system("date")}' 1.txt --通过system()调用shell命令,主要命令要用“”包起来。
1 4
Sun Feb 26 13:35:54 2017
2 8
Sun Feb 26 13:35:54 2017
如下例,每个段前都可以有一个条件,可以是正则表达式,也可以是类似NF<1之类。
$ awk 'BEGIN {print "this is begin"}; {print "hello,"$1};
/^\n$/ {print}; END {print "this is the END"}' 1.txt
this is begin
hello,gaofeng
hello,
hello,cc
hello,yangyang
this is the END
awk的语法类似c,也类似脚本语言。可以编写代码进行信息统计,平均成绩计算等。
$ awk 'NF>0 {print $1":"($2+$3+$4)/3}' 1.txt
gaofeng:48.3333
cc:88
yangyang:4
一篇好文章:http://www.cnblogs.com/qieerbushejinshikelou/archive/2013/11/20/3420519.html
相关文章推荐
- 【转】如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
- 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
- grep、sed、awk
- 操作 sed & awk (3) 基础-sed 命令
- awk之原文编辑(类似 sed -i 功能)
- awk sed grep 正则表达式
- sed&awk学习总结
- linux下的sed和awk命令详解
- Linux文本操作三剑客(sed, awk, grep)——awk
- 学习shell, 正则表达式, awk, sed
- grep、sed和awk命令的简单使用
- 有关grep, sed, awk命令的练习题
- sed和awk传入外部变量之《鸟哥的Linux私房菜》勘误
- linux的awk和sed等命令比较
- linux cut,sed与awk的使用
- Linux中正则表达式与文件格式化处理命令(awk/grep/sed)
- 第四章 第三节 awk、sed 3.23
- sed与awk基本知识2018.03.23
- sed和awk的运用
- sed和awk结合使用范例