grep:文本过滤工具,能够实现根据指定的模式patten逐行搜索文件内容并显示匹配到的行,默认使用基本正则表达式
-i:忽略大小写 -o:只显示匹配的串
-v:显示不匹配的 -E:使用扩展正则,或直接使用egrep
补充:sed以行为单位编辑
awk
一行一行分析,awk能细分,将一行分为多个字段,以字段为单位进行处理,默认分隔符为空格,支持C语法,可以有分支条件判断,循环语句。
find
find命令在目录结构中搜索文件,并执行指定的操作。
find path -option [ -print ] [ -exec -ok command ] {} \;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
#-print 将查找到的文件输出到标准输出
#-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
#-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
可以根据文件各种属性进行查找,如文件名、
执行权限
、属主、属
组、时间等
例:find . -name .svn | xargs rm -rf
find常与xargs、grep结合实现复杂查找
要在/usr/linux中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名,有以下几种方法实现
find /usr/linux -name "*.h" | xargs grep SYSCALL_VECTOR
grep SYSCALL_VECTOR /usr/linux/*.h | cut -d’:’ -f1 | uniq > filename
find /usr/linux -name "*.h" -exec grep "SYSCALL_VECTOR" {} \; -print (不建议)
注:
xargs命令为参数过滤
find /usr/linux -name "*.h" | xargs grep SYSCALL_VECTOR
grep SYSCALL_VECTOR /usr/linux/*.h | cut -d’:’ -f1 | uniq > filename
find /usr/linux -name "*.h" -exec grep "SYSCALL_VECTOR" {} \; -print (不建议)
RE:正则表达式
basic RE基本,extended RE扩展
1、基本
字符
. 任意单个
[]指定范围内的单个
[^]指定范围外的单个
次数匹配(贪婪模式)
*: 0,1或多次
?:0,1次
\{m,n\}:至少m至多n次
\{m,\}:至少m
\{0,n\}:至多n
\{m\}:m次
锚定符:定位
单词锚定:\< 或\b锚定词首
\> 或\b 锚定词尾
所以,定位一个单词\<单词\>
^ 行首 $ 行尾
分组:\(\) 另外
向后引用:\1表示引用第一个左括号中内容 \2表示第二个 等等
2、扩展与基本区别
次数匹配:
+:其前字符至少一次
{m,n}:不需用反斜线
分组:()
或者:|:or,指的是整个左边或者右边
3.文本编辑器
行编辑器:sed ,Stream EDitor
全屏幕编辑器:nano ,emacs ,vi=visual interface ,vim=vi improved
vi: 模式化编辑器
编辑模式:命令,如dd表示删除
输入模式:内容,
如dd表示dd字符本身
末行模式:!shell command 可在不关闭vi下
执行shell命令
删除:d后可结合跳转命令
撤销:u:撤销上次操作
#u:撤销最近#次操作