一、grep
grep用于匹配文件。用来显示匹配一个或者多个模式的问本行。默认是打印匹配的所有行。
grep语法:grep [option...] patten-spec [file....]
主要选项:
-b 在搜索到的行的前面打印该行所在的块号码。
-c 只显示有多少行匹配 ,而不具体显示匹配的行
-h 不显示文件名
-i 在字符串比较的时候忽略大小写
-l 只显示包含匹配模板的行的文件名清单,不同项目之间用换行符分隔
-L 打印不匹配模板的文件名清单
-n 在每一行前面打印该行在文件中的行数
-s 静默工作,除非出现错误信息否则不打印任何信息,这个功能在检测退出状态的时候有用
-v 反检索,只显示不匹配的行
-Ax 在匹配指定行打印完毕后,再打印x行(向原文件匹配行下x行)
-By 在匹配指定行前面打印y行(在原文件匹配行上面打印y行)
-Cz 在匹配行前后打印z行 (在原文件匹配行上下打印z行)
-b 在每一行前面打印字符偏移量
-f file 从文件file中提取模板。空文件中包含0个模板
-q 取消标准输出,跟-n功能是一样的
-s 不显示关于不存在或者无法读文件的错误信息
-w 只打印以单词形式匹配模板的行,模板可以是包含数字、字符和下划线的字符串
-x 只打印整行匹配的行
-y 用法同-i
-U 把文件作为二进制文件,这个选项只在MS-DOS和MS-Windows中被支持
(这个参数没有明白,请过路高人指点,非常感谢)
-u 按照unix风格报告字符偏移量。只在-b选项同时被使用的时候才有效。这个选项只在MS-DOS和MS-Windows中被支持
grep "$name" file 把变量$name 的值作为模板,在文件中寻找匹配模板的行。注意,必须使用双引号
grep只是获取匹配模型的内容,不会对内容进行编辑。需要对内容进行编辑,使用sed。
二、sed
sed对输入流进行编辑,将编辑结果输出到标准输出。
常用到的编辑就是替换和删除。
替换方法s,比如sed 's/:.*/hello/' text 将text文本中每一行“:”及后面的内容替换为hello。默认只替换第一个匹配,如果需要制定替换第几个匹配,则添加数字,比如sed 's/:.*/hello/2' text 只会替换第二个匹配。全部替换则将2换为g。
删除使用d:sed '/^#/d' file删除file文件中以#开始的行,输出剩下的行。