重定向、管道、正则表达式中的常见命令
2013-03-03 20:47
302 查看
1 管道和重定向: 1.1 运算器、控制器:CPU 存储器:RAM 输入设备/输出设备 地址总线:内存寻址 数据总线:传输数据 控制总线: 控制指令 寄存器:CPU内部暂时存储器 1.2 I/O:硬盘,键盘,鼠标 程序:(程序运行结束后数据保存在内存当中,而关机后数据保存在外围设备上) INPUT设备(数据或指令的来源):硬盘,键盘,鼠标,网卡 OUTPUT设备: 系统设定 默认输出设备:标准输出,STDOUT,用数字1标识 (passwd --stdin) 默认输入设备:标准输入,STDIN,用数字0标识 标准错误输出:专门定义错误的信息保存在何处,STDERR,用数字2标识 标准输入:键盘 标准输出和错误输出:默认都被定性到显示器 1.3 I/O重定向(改变了数据的输出来源和输入来源) 对linux而言重定向需使用一些符号来完成: >:输出重定向(覆盖目标输出的源文件,简称为覆盖输出) eg:ls /var > /tmp/var.out 把var指定到tmp下的var.out >>:追加输出(可以保留文件原有的内容,而且在文件尾部继续新增新内容) eg:ls /var >> /tmp/var.out 然后cat /tmp/var.out一下就可发现新变化 set -C:禁止对已经存在文件使用覆盖重定向; 若强制覆盖输出,则使用>| eg:ls /usr >| /tmp/var.out set +C;关闭上述功能 2>:重定向错误输出 2>>:追加方式实现重定向错误输出 &>:重定向标准输出或错误输出至同一个文件 eg:ls /var6 &> /tmp/var5.out (错误输出) eg:ls /var &> /tmp/var5.out (正确输出) <:输入重定向 eg:tr 'a-z''A-Z' < /etc/fstab 把小写字母换成大写字母 <<:Here Document(在此处生成文档) eg:cat << END(文档结束符) cat << EOF(endof UI) cat >> /tmp/myfile.txt << EOF (此方法可在脚本中生成文档或生成文件) 2 管道:前一个命令的输出,作为后一个命令的输入(可以使用n重管道) 命令1 | 命令2 | 命令3 | ... eg:# echo "hello,world." # echo "hello,world." | tr 'a-z''A-Z' 可把“hello,world."换成"HELLO,WORLD." eg:cut -d: -f1 /etc/passwd |sort 对etc下的文件passwd的用户名排序 eg:cut -d: -f1 /etc/passwd |sort -n 对etc下的文件passwd中的数字按数值大小排序 2.1 tee(从标准输入读取数据,并且发送至标准输出和文件;可将数据既保存到文件当中又可输出到屏幕上来)) eg:echo “Hello,Word.” | tee /tmp/hello.out 把“Hello,Word.”保存到/tmp/hello.out下,是由tee出来的,而非echo出来的 eg:wc -l /etc/passwd | cut -d' ' -f1 只显示passwd文件下的行数 2.2 文本查找的需要 grep,egrep,fgrep grep(Global Research全面的去搜索研究正则表达式并显示出来):根据模式,搜索文本,并将符合模式的文本行显示出来。(本身意义作部分匹配) Pattern(模式):文本字符和正则表达式的字符组合而成匹配条件 用法:grep [options] PATTERN [FILE...] eg:grep 'root' /etc/paswd 查找文件中符合条件的行 -i:表示忽略字符大小写 eg:grep -i 'root' /etc/passwd --color(或者--colour):后面必须带上值 eg:grep --color'root' /etc/passwd eg:alias grep='grep --color' 为'grep --color' 起个别名,以便直接使用grep来表示其含义 -v:反向查找,被模式匹配到的行不显示,不匹配到的行反而显示(显示未配匹配到的行) -o:只显示被模式匹配到的字符串 3 正则表达式:ReGular EXPression(简写为REGEXP) 3.1 元字符: . : 表示匹配任意单个字符 eg:grep 'r..t' /etc/passwd 查找以r开头,以t结尾,中间含有两个任意字符的文件 [] : 匹配指定范围内的任意单个字符 [^]: 匹配指定范围外的任意单个字符 字符集合:[:digit:],[:lower:],[:upper:],[:punct:],[:alpha:],[:alnum:] eg:grep '[[:digit:]]$' /etc/inittab 以数字结尾的行 eg:grep '[[:space:]][[:digit:]]]$' /etc/inittab 以一个空白字符后跟数字结尾的行 匹配次数(贪婪模式 即尽可能长的匹配): *:匹配其前面的字符任意次 eg: a, b, aab, acb, adb, amnb a*b: b, aab a.*b: ab, aab, acb, adb, amnb a?b: b, ab, aab, acb, adb, amnb a\{1,3\}b: a, aab a.\{1,3\}b: aab, acb, adb, amnb .* :任意长度的任意字符 \?:匹配其前面的字符1次或0次,表示字符可有可无 \{m,n\}:匹配其前面的字符至少m次,至多n次 \{1,\} :匹配其前面的字符至少1次,多了不限 \{0,3\}:匹配其前面的字符最多3次,不出现也行 3.2 位置锚定: ^: 锚定行首,此字符后面的任意内容必须出现在行首 eg:grep '^r..t' /etc/passwd $: 锚定行尾,此字符前面的任意内容必须出现在行尾 eg: grep 'y$' /etc/inittab 查找etc下以y结束的行 eb: grep 'b..h$' /etc/passwd 查找etc下以b开头中间跟任意两个字符以h结尾的行 ^$:空白行 eg:grep '^$' /etc/inittab 查找etc下的空白行 eg: grep '^$' /etc/inittab | wc -l 查找etc下的空白行的行数 \<或\b: 锚定词首,其后面的任意字符必须作为单词首部出现 \>或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现 \<root\>:在整个文件当中每一行就找root这个单词,必须是整个单词 eg: grep ”root\>" test2.txt root出现在词尾 eg: grep "\<root" test2.txt root出现在词首 eg;grep "\<root\>" test2.txt 精确查找root 3.3 分组: \(\) ab* : a后面跟一个或多个b,不跟b也行 \(ab\)* :ab可出现0次1次或n次 eg:grep "\(ab\)*" test.txt 后向引用(被前面括号括起来的内容后面我们可以使用一个单词继续引用它) eg:nano test3.txt He love his lover. She like her liker. He like his lover. She like him. #grep 'l..k' test3.txt 以l开头k结尾中间跟两个字符 #grep 'l..e*l..e' text3.txt 一行当中必须要出现包含了以l开头然后两个字符以e结尾的字符中间跟任意字符后又跟以l开头然后两个字符以e结尾的字符 #grep '\(l..e\).*\1' test3.txt 若前面出显love则后面也匹配love,若前面匹配like后面引用like \1:引用第一个左括号以及与之对应的右括号所包括的所有的内容; \2:引用第二个左括号以及与之对应的右括号所包括的所有的内容; \3:引用第三个左括号以及与之对应的右括号所包括的所有的内容; eg:grep '\([0-9]\).*\1$' /etc/inittab 在/etc/inittab文件中行中行首出现了任意一个数字中间跟任意字符行尾也出现与行首相同的数字
相关文章推荐
- [linux学习笔记]第3天:变量分类,重定向,管道命令,程序执行流,文本处理类命令, 正则表达式,短路操作符
- Linux的变量I/O重定向管道全局搜索正则表达式
- Shell 命令 正则/管道/重定向
- linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)
- (管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)
- 正则表达式、管道和重定向
- tar命令,重定向,正则表达式,添加删除用户,tr命令,sort排序
- 正则表达式 重定向 管道
- Linux grep命令正则表达式的常见用法
- GREP 正则表达式 扩展正则表达式 重定向
- 用于过滤空白字符的几种常见的js正则表达式pattern
- 用sed命令进行正则表达式匹配字符串,如何检验匹配是否成功?
- Linux I/O重定向以及正则表达式
- linux 命令之间传递数据的方式:重定向、管道、xargs 命令。
- Java学习系列(六)Java面向对象之Jar命令、正则表达式、国际化详解
- 常见正则表达式集合
- 重定向与管道命令
- linux下 grep命令支持正则表达式
- 【linux学习】Linux文本操作命令及正则表达式基础
- grep命令使用以及正则表达式简述