1. find 查找符合查找条件的文件
find pathname -options [-print -exec -ok …]
--options:
-perm :文件查找权限,后加数字
-type :文件类型,后加f:文件 d:目录 l:符号连接文件
-group : 查找属于group指定用户组的文件
-exec :后面跟的是command命令
command命令的终止,使用 分号“;”来肯定,在后面必须有一个';'
{},使用{}来表示文件名,也就是find前面处理过程当中过滤出来的文件,用于command命令进行处理,可是对于不一样的系统直接使用分号可能会有不一样的意义,使用转移符'\' 在分号前明确说明。
-ok :后面跟的是command命令,与-exec不一样的是每次执行command 都须要用户确认是否执行。
Example:(1).列出文件名中含有root字符的文件
find / -type f -name “*root*” -exec ls -l {} \;
2. tr 过滤器tr用来转换来自标准输入的字符。
tr [OPTION]... SET1 [SET2]
1',把passwd中的全部小写字符转换成小写字符
tr [a-z] [A-Z] < /etc/passwd
--options
-s : 删除全部与SET1重复的字符,只保留第一个。
2',除去重复的e
tr -s 'e' <test4.txt
tr -s 'e' 'f' <test4.txt 把e转换成f并把重复的f除去
-d : 删除SET1同样的字符
3',删除passwd中的':'
tr -d ':' /etc/passwd
3. sort 按字典序排序
4. uniq 去除重复
5. cut 字符串截取
cut OPTION... [FILE]…
--options
-c:以字符为单位取出指定位置的字符
-d:指定分隔符分割字符串 与-f一块儿使用
-b:以字节为单位取出指定位置的字符
-f:依据 -d 的分隔字元将一段讯息分割成为数段,用 -f 取出第几段的意思
cut -d ':' -f1 /etc/passwd
对文件/etc/passwd 的每一行以 : 为分割符,取出第一段
6. sed 过滤和转换文本的流编辑器
sed [OPTION]... {script-only-if-no-other-script} [input-file]…
sed [options] 'command' file(s)
--option
-n --quiet,--silent
-e command,--expression=commandgit
-i 直接在原文件上修改,而不是输出到stdout,不然其它的处理都输出到stdout正则表达式
--command(相似vim中的command)
1'.d 删除指定的范围的内容
$sed '2d' bashrc 删除bashrc文件的第二行
$sed '2,$d' bashrc 删除bashrc文件的2到最后一行
$sed '/#/d' bashrc 删除bashrc文件中包含#的行
2'.s 替换命令
$sed 's/#/$/' bashrc 把bashrc文件每一行中的第一个#替换成$
3'.p 打印命令
$sed -n '2,5p' bashrc 把bashrc文件的2到5行打印出来
4'.e 多点编辑(能够多个命令一块儿用)
$ -n -e 's/#/$/' -e '2,5p' bashrc 把bashrc文件每一行中的第一个#替换成$,并把2,到 5行打印出来
5'.a\ 追加命令
$sed '/^#/a\This is append' bashrc 在bashrc文件的每一行行首是#的行的下一行添加 This is append
6'.i\ 插入命令
$sed '/^#/i\This is append' bashrc 在bashrc文件的每一行行首是#的行的前一行添加 This is append
7'. w 写入文件命令
$sed '/^#/w filename' bashrc 把bashrc中的每一行行首为#的行写入文件filename中
8'. r读入文件
$sed '/^#/r filename' bashrc 把filenmae的内容写入到 bashrc文件中的行首是#的行的后面express
7.awkvim
主要用于解析文本。
bash
8. grep
grep [OPTIONS] PATTERN [FILE...]
--OPTIONS:
-i :忽略大小写
--color
-v :显示没有匹配的选项
-o :只显示匹配的字符串
-r :递归的搜索匹配
--PATTERN: 正则表达式 regular expression(RE)
[]:匹配指定范围内的任意单个字符
[^ ]:匹配不在指定范围内的任意单个字符
字符集:
[:digit:] [:space:] [:upper:] [:lower:] [:alpha:] [:alnum:]
'[[:digit:]][[:space:]]' 表示匹配一个数字后加一个空格
元字符:
(1).'.':匹配任意单个字符
(2).'*':匹配其前面的字符任意次
(3).'\?':匹配其前面的字符0或1次
(4).'\{n,m\}':匹配其前面的字符n到m次
位置:
(1). '^':此字符后面的字符必须出如今行首
(2). '$':此字符前面的字符必须出如今行尾 ^$空白行
(3). '\<或\b':此字符后面的字符必须做为单词首部出现
(4). '\>或\b':此字符前面的字符必须做为单词尾部出现
分组:
(1).'\(\)':后向引用
\1:第一个左括号以及对应的右括号匹配的字符
\2:第二个左括号以及对应的右括号匹配的字符
\3:第三个左括号以及对应的右括号匹配的字符
example:
test.txt:
He love his lover
He love his liker
He like his lover
He like his liker
$grep '\(l..e\).*\1' test.txt
匹配:
He love his lover
He like his liker
(l..e)被做为一个组看待,它是一个组,它的名称是1,而后 .*表示 以后的任意个字符,【\1】指代的是前面用括号括起来的l..e。
--扩展
egrep
fgrep: fast grep,不支持正则表达式
sed,awk支持正则表达式
9. file globbing (文件通配符)
bash自己没有正则表达式的功能,bash所作的是展开文件名扩展,就是所谓的通配(globbing).
不是使用标准的正则表达式,而是使用通配符。通配解释标准的通配符:
(1), *匹配任意多个字符, 除了”.”
(2), ?匹配一个字符, 除了”.”
(3), []匹配方括号中的任意一个字符,除了”.”
(4), 通配机制中的通配符和元字符不会扩展点文件
PS:Bash 会对命令行中没有引号引发来的字符尝试文件名扩展app