1、grepgrep命令主要用于搜索文本内容。支持正则表达式搜索,命令格式为:grep[option]patternfilename例如:查找文件名中包含"text"的行text:grep"text"filename当option为-o时,该命令默认只输出匹配的文本行,命令行仅在选项为-v时输出匹配的文本,而命令行仅输出无与伦比的文本行。默认只处理模式空间,不处理原始数据,sed对一行数据进行处理。sed的命令格式为:sed[option]'command'filenameoption常用选项如下:-n:使用静默(silent)模式。在正常的sed使用中,来自stdin的所有数据通常都列在终端上。但如果加上-n参数,则只会列出经过sed特殊处理的行(或action)。-e:直接在命令行模式下执行sed动作编辑。-i:直接修改读取文件的内容,而不是输出到终端。命令可以分为以下几种:a:Append,可以在a之后连接字符串,这些字符串会换行出现(目前是下一行)i:Insert,可以在i之后连接字符串,并且这些字符串会换行出现(当前上一行)d:以行为单位删除c:以行为单位替换,c后面可以跟字符串s:以行查找替换p:以行为单位显示,一般p会一起运行使用参数sed-n。例如:1.在文件名文本的最后一行添加helloworld:sed'$helloworld'filename2。将helloworld插入文件名文本的第一行:sed'1ihelloworld'filename3。在最后一行添加helloworld,在第一行插入helloworld:sed-e'$aeloworld'-e'1ihelloworld'filename另外,sed更常用于文本替换,它也支持正则表达式,这很强大。例如:1.表示将filename文本中每一行的oldstring替换为newstring:sed's/oldstring/newstring/g'filename2.删除空行:sed'/^\s*$/d'filenamePS:\in正则表达式s表示空白字符(包括空格、制表符等)3、awkawk命令主要用于文本内容的分析处理。如果处理后的数据需要生成报表等信息,或者处理后的数据是按列处理的,就用awk。awk读取一条以'\n'换行符分隔的记录,然后将记录按照指定的字段分隔符划分为多个字段,$0表示所有字段,$1表示第一个字段,$n表示第n个字段。例如:文件名文本的每一行用“:”分隔,打印第一列awk-F':''{print$1}'文件名打印可以使用print函数,如果需要格式化打印,使用printf函数likeC语言。练习:sed和awk自定义显示示例1.可以做一个文本test.txt,内容是:Thisismycat,mycat'snameisbettyThisismydog,mydog'snameisfrankThisismyfish,myfish'snameisgeorgeThisismygoat,mygoat'snameisadam要显示的结果是:cat:bettydog:frankfish:georgegoat:adam如果你用sed,可以输入sed's/Thisismy\(.*\),.*is\(.*\)/\1:\2/g'test.txt如果你用awk,有两种方法awk-F'[,]''{print$4,$10}'OFS=":"test.txtawk-F'[,]''{printf("%s:%s\n",$4,$10)}'test.txtawk-F,'{print$1,$2}'test.txt|awk'{print$4,$9}'OFS=":"
