linux下sed和awk命令使用入门
先发两个连接,因为我就是从这两个链接入手的~
1、sed使用入门:https://www.geek-share.com/detail/2534263760.html
2、awk使用入门:https://www.geek-share.com/detail/2569071680.html
对比grep、sed、awk
1、三者的共同点是都支持正则表达式,通常都用于文本的处理。
2、三者的不同点是grep主要用于查找文本,sed用于对文本进行增加、删除和修改,而awk用于对文本进行统计,感觉sed很像windows下的word,而awk很像excel,只不过是没有样式的命令行方式。
sed使用感受
sed的使用格式:
sed [-nefri] ‘command’ filename
其中用过选项:
-n:只显示被sed命令处理的部分,其余的不显示。这个参数真好,修改过的地方一目了然。
-i:使用该参数后,文件内容会被修改,而不加该参数,虽然终端输出是修改过的内容,但文件内容不变。
-e:表示多点编辑 -e 'command' -e 'command' .... filename==== sed -e '1p' -e '$d' test.txt
常用命令:
a:==add追加,在当前行追加一行================sed '1,8a end' test.txt
p:==print常和-n一起使用,只是简单输出选中的行====sed -n '5,$p' test.txt
d:==delete删除选中的行=======================sed '$d' test.txt
c:==replace/displace将选中的行用新的字符串替换掉==sed '1,6c hello world!' test.txt
i:==insert插入到当前行的上一行=================sed '5i hello world!' test.txt
s:==supersede跟c一样,也是替换,但可以使用正则
sed -n '/test/p' test.txt | sed 's/test/hello/g'
上边的命令还可以写成一条命令:
sed -n '/test/{s/test/hello/g;p}'
即花括号{}中可以用多个命令,且它们之间用分号;隔开。
总结:sed的命令使用方式是先指明参数,表明处理的数据该如何显示或者使用的sed是命令行还是存储在文件中等,而命令的写法一定是放在一对儿单引号‘’中,先指明待处理的行,可直接用行号指定,也可用正则//选取,然后指明增、删、改、输出等行为,根据行为的不同,其后可跟或不跟字符串,filename指明对哪个文件进行修改。
ps:我也不知道自己为啥要写这样一个总结,总觉得写完后再用sed时,语法就记得很清晰了。
awk使用感受
第一次接触awk时很震惊,它竟然是一门程序设计语言!!!!!!!!!!虽然现在经历有限,只能看看入门,但以后有时间一定要再仔细钻研一下。
调用方式:
1、命令行方式:awk [-F 'seperator'] 'pattern + {action}' {filename}
2、脚本方式:#!/bin/awk
3、文件调用:awk -f awk-script-file filename
命令行方式:
①awk -F ':' '{print $1“\t”$5}' test.txt=====这里只有action,没有pattern,默认的pattern应该是取所有行。
②awk -F ':' 'BEGIN {print "key,value"} {print $1“\t”$5} END {print "end_key,end_value"}' test.txt
命令②执行顺序是先执行BEGIN的action,然后对文件进行处理,即中间的{},再执行END后边的action。
③awk -F ':' '{printf "filename=%s,linenumber=%s,columns=%s,size=%s",FILENAME,NR,NF,$8}' test.txt
awk竟然有自己的内置变量,当然是处理文本时最常用的,而且支持像C一样的输出方式,真让人忍不住要用一用。
④awk 'BEGIN {count=0;} {count++;} END {print "total num of files is:",count,个}' test.txt
awk可以自定义变量,且不用声明,后续使用直接引用即可,不需加入$等符号。
⑤awk -F ':' 'BEGIN {count=0;} {if($5 > 1024) { count++;}} END {print "num of files > 1kb is:",count}' test.txt
⑥awk -F ':' 'BEGIN {count=0;} {if($5>1024){filename[count]=$1;count++;}} END {for(i=0;i<count;i++){printf "the %s file is %s",i,filename[i]}}'
真心是佩服发明awk的几位前辈呀。
个人觉得需要注意的地方除了使用语法外,一定要记得-F ‘seperator’,因为如果实际文件不是以空格来区分域的话,那取出的$i都将是一整行。
- linux中sed命令和awk命令的使用
- Linux中使用sed命令或awk命令修改常规配置文件
- linux之grep,sed,awk命令实例大练习
- 嵌入式系统基础之LINUX使用入门, Linux的常用网络命令:nslookup命令
- Linux使用awk命令在显示指定的多列时让其分隔开
- linux中sed命令的使用
- 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2 等
- linux下的文本处理命令sed&awk&grep
- 请教大家,如何使用sed命令,替换文件指定行的内容呢?-Linux系统管理-ChinaUnix.net
- Linux awk命令详解 sed
- Linux中sed和awk的使用及其相关实例解析
- Linux常用命令笔记-ftp/sed/awk
- 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
- Linux文本过滤命令grep|awk|sed小结
- linux awk命令使用的一些心得-基础命令
- 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
- 使用sed和awk命令删除第一列
- linux命令之sed,awk,grep,cut
- 【转】如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
- 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等