|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行。
sed和awk都是linux下经常使用的流编纂器,他们各有各的特征,本文并非要做甚么对照,而是权当好玩,把《SED单行剧本疾速参考》这文章,用awk做了一遍~
至于孰好孰坏,那真是很难批评了。一样平常来讲,sed的命令会更短小一些,同时也更难读懂;而awk略微长点,可是if、while如许的,逻辑性对照强,加倍像“程序”。究竟喜好用哪一个,就让列位看官本人决意吧!
PS:貌似这个配色,单行的代码多了今后,拖动的时分会有点目炫的感到,迁就下吧,呵呵。
文本距离:
——–
#在每行前面增添一空行#将本来的一切空行删除并在每行前面增添一空行。
#如许在输入的文本中每行前面将有且只要一空行。- awk"!/^$/{printf("%s",$0)}"
复制代码 #在每行前面增添两行空行#将第一个剧本所发生的一切空行删除(即删除一切偶数行)#在婚配式样“regex”的行之前拔出一空行- awk"{if(/regex/)printf("%s",$0);elseprint$0}"
复制代码 #在婚配式样“regex”的行以后拔出一空行#在婚配式样“regex”的行之前和以后各拔出一空行- awk"{if(/regex/)printf("%s",$0);elseprint$0}"
复制代码 编号:
——–
#为文件中的每行举行编号(复杂的左对齐体例)。这里利用了“制表符”
#(tab,见本文开端关于’ ’的用法的形貌)而不是空格来对齐边沿。#对文件中的一切行编号(行号在左,笔墨右端对齐)。#对文件中的一切行编号,但只显现非空缺行的行号。#盘算行数(摹拟“wc-l”)文本转换和替换:
——–
#Unix情况:转换DOS的新行符(CR/LF)为Unix格局。#Unix情况:转换Unix的新行符(LF)为DOS格局。
sed"s/$/`echo-e`/"#在ksh下所利用的命令sed"s/$""/`echo`/"#在bash下所利用的命令sed"s/$/`echo`/"#在zsh下所利用的命令sed"s/$//"#gsed3.02.80及更高版本#DOS情况:转换Unix新行符(LF)为DOS格局。#DOS情况:转换DOS新行符(CR/LF)为Unix格局。
#上面的剧本只对UnxUtilssed4.0.7及更高版本无效。要辨认UnxUtils版本的
#sed能够经由过程其独有的“–text”选项。你可使用匡助选项(“–help”)看
#个中有没有一个“–text”项以此来判别所利用的是不是是UnxUtils版本。别的DOS
#版本的的sed则没法举行这一转换。但能够用“tr”来完成这一转换。#将每行前导的“空缺字符”(空格,制表符)删除
#使之左对齐- awk"!/^$/{printf("%s",$0)}"0
复制代码 #将每行拖尾的“空缺字符”(空格,制表符)删除- awk"!/^$/{printf("%s",$0)}"1
复制代码- awk"!/^$/{printf("%s",$0)}"2
复制代码 #将每行中的前导和拖尾的空缺字符删除- awk"!/^$/{printf("%s",$0)}"3
复制代码- awk"!/^$/{printf("%s",$0)}"4
复制代码 #在每行开首处拔出5个空格(使全文向右挪动5个字符的地位)- awk"!/^$/{printf("%s",$0)}"5
复制代码- awk"!/^$/{printf("%s",$0)}"6
复制代码 #以79个字符为宽度,将一切文本右对齐
#78个字符外加最初的一个空格- awk"!/^$/{printf("%s",$0)}"7
复制代码- awk"!/^$/{printf("%s",$0)}"8
复制代码 #以79个字符为宽度,使一切文本居中。在办法1中,为了让文本居中每行的前
#头和背面都添补了空格。在办法2中,在居中文本的过程当中只在文本的后面添补
#空格,而且终极这些空格将有一半会被删除。别的每行的背面并未添补空格。- awk"!/^$/{printf("%s",$0)}"9
复制代码 #在每行中查找字串“foo”,并将找到的“foo”交换为“bar”#只外行中呈现字串“baz”的情形下将“foo”交换成“bar”#将“foo”交换成“bar”,而且只外行中未呈现字串“baz”的情形下交换#不论是“scarlet”“ruby”仍是“puce”,一概换成“red”#颠倒一切行,第一行成为最初一行,顺次类推(摹拟“tac”)。
#因为某些缘故原由,利用上面命令时HHsedv1.5会将文件中的空行删除#将行中的字符逆序分列,第一个字成为最初一字,……(摹拟“rev”)#将每两行毗连成一行(相似“paste”)#假如以后行以反斜杠“”停止,则将下一行并到以后行开端
#并往失落本来行尾的反斜杠#假如以后行以等号开首,将以后行并到上一行开端
#并以单个空格取代本来行头的“=”#为数字字串增添逗号分开标记,将“1234567”改成“1,234,567”#为带有小数点和负号的数值增添逗号分开符(GNUsed)#在每5行后增添一空缺行(在第5,10,15,20,等行后增添一空缺行)选择性地显现特定行:
——–
#显现文件中的前10行(摹拟“head”的举动)#显现文件中的第一行(摹拟“head-1”命令)#显现文件中的最初10行(摹拟“tail”)- awk"{f=!f;if(f)print$0}"0
复制代码 #显现文件中的最初2行(摹拟“tail-2”命令)- awk"{f=!f;if(f)print$0}"1
复制代码- awk"{f=!f;if(f)print$0}"2
复制代码 #显现文件中的最初一行(摹拟“tail-1”)- awk"{f=!f;if(f)print$0}"3
复制代码- awk"{f=!f;if(f)print$0}"4
复制代码 #显现文件中的倒数第二行- awk"{f=!f;if(f)print$0}"5
复制代码- awk"{f=!f;if(f)print$0}"6
复制代码 #只显现婚配正则表达式的行(摹拟“grep”)- awk"{f=!f;if(f)print$0}"7
复制代码- awk"{f=!f;if(f)print$0}"8
复制代码 #只显现“不”婚配正则表达式的行(摹拟“grep-v”)- awk"{f=!f;if(f)print$0}"9
复制代码 #查找“regexp”并将婚配行的上一行显现出来,但其实不显现婚配行#查找“regexp”并将婚配行的下一行显现出来,但其实不显现婚配行#显现包括“regexp”的行及其前先行,并在第一行之前加上“regexp”地点行的行号(相似“grep-A1-B1”)#显现包括“AAA”、“BBB”和“CCC”的行(恣意序次)#显现包括“AAA”、“BBB”和“CCC”的行(流动序次)- awk"{if(/regex/)printf("%s",$0);elseprint$0}"0
复制代码 #显现包括“AAA”“BBB”或“CCC”的行(摹拟“egrep”)- awk"{if(/regex/)printf("%s",$0);elseprint$0}"1
复制代码- awk"{if(/regex/)printf("%s",$0);elseprint$0}"2
复制代码 #显现包括“AAA”的段落(段落间以空行分开)
#HHsedv1.5必需在“x;”后到场“G;”,接上去的3个剧本都是如许- awk"{if(/regex/)printf("%s",$0);elseprint$0}"3
复制代码- awk"{if(/regex/)printf("%s",$0);elseprint$0}"4
复制代码 #显现包括“AAA”“BBB”和“CCC”三个字串的段落(恣意序次)- awk"{if(/regex/)printf("%s",$0);elseprint$0}"5
复制代码- awk"{if(/regex/)printf("%s",$0);elseprint$0}"6
复制代码 #显现包括“AAA”、“BBB”、“CCC”三者中任一字串的段落(恣意序次)- awk"{if(/regex/)printf("%s",$0);elseprint$0}"7
复制代码- awk"{if(/regex/)printf("%s",$0);elseprint$0}"8
复制代码 #显现包括65个或以上字符的行- awk"{if(/regex/)printf("%s",$0);elseprint$0}"9
复制代码 #显现包括65个以下字符的行#显现部分文本——从包括正则表达式的行入手下手到最初一行停止#显现部分文本——指定行号局限(从第8至第12行,含8和12行)#显现第52行#从第3行入手下手,每7行显现一次#显现两个正则表达式之间的文本(包括)选择性地删除特定行:
——–
#显现通篇文档,除两个正则表达式之间的内容#删除文件中相邻的反复行(摹拟“uniq”)
#只保存反复行中的第一行,其他行删除#删除文件中的反复行,不论有没有相邻。注重holdspace所能撑持的缓存巨细,大概利用GNUsed。#删除除反复行外的一切行(摹拟“uniq-d”)#删除文件中开首的10行#删除文件中的最初一行#删除文件中的最初两行#删除文件中的最初10行#删除8的倍数行#删除婚配式样的行#删除文件中的一切空行(与“grep‘.’”效果不异)#只保存多个相邻空行的第一行。而且删除文件顶部和尾部的空行。
#(摹拟“cat-s”)#只保存多个相邻空行的前两行。#删除文件顶部的一切空行#删除文件尾部的一切空行#删除每一个段落的最初一行特别使用:
——–
#移除手册页(manpage)中的nroff标志。在UnixSystemV或bashshell下使
#用’echo’命令时大概必要加上-e选项。#提取旧事组或e-mail的邮件头#提取旧事组或e-mail的注释部分#从邮件头提取“Subject”(题目栏字段),并移除开首的“Subject:”字样#从邮件头取得复兴地点#猎取邮件地点。在上一个剧本所发生的那一行邮件头的基本长进一步的将非电邮地点的部分剃除。(见上一剧本)#在每行开首加上一个尖括号和空格(援用信息)#将每行开首处的尖括号和空格删除(排除援用)#移除年夜部分的HTML标签(包含跨行标签)#将分红多卷的uuencode文件解码。移除文件头信息,只保存uuencode编码部分。
#文件必需以特定按次传给sed。上面第一种版本的剧本能够间接在命令行下输出;
#第二种版本则能够放进一个带实行权限的shell剧本中。(由RahulDhesi的一
#个剧本修正而来。)#将文件中的段落以字母按次排序。段落间以(一行或多行)空行分开。GNUsed利用
#字元“v”来暗示垂直制表符,这里用它来作为换行符的占位符——固然你也能够
#用其他未在文件中利用的字符来取代它。#分离紧缩每一个.TXT文件,紧缩后删除本来的文件并将紧缩后的.ZIP文件
#定名为与本来不异的名字(只是扩大名分歧)。(DOS情况:“dir/b”
#显现不领路径的文件名)。上面的一些SED申明略过,必要的伴侣自行检察原文。
本文来自:http://li2z.cn/2009/12/07/sed_awk/
系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo、pswho |
|