linux基本命令2 正则表达式、grep、sed、awk、cut
管道 | linux支持管道,即把前面的命令执行的结果通过管道传输给后面的命令 命令1 | 命令2 | 命令3 … 重定向 > 、>>、<、<< a、> 将命令结果输出到文件中,如果存在文件则覆盖其中内容。 b、>> 将命令结果输出到文件中,如果存在文件则在末尾添加内容。 c、< 输入重定向 例如常见的 while read line < test.lst 用于读取文件 d、<<here document . 文档终止符。经常用于数据库连接生成日志 e、补充:&>重定向所有输出。2>重定向错误输出。2>>重定向错误输出追加 正则表达式pattern 正则表达式是三个命令经常使用的。
元字符含义.表示单个字[ ]匹配任意范围内的任意单个字符[^]匹配指定范围外的任意单个字符 匹配次数含义*匹配其前面的字符任意次,包含0次.*匹配任意长度的任意字符?匹配其前面的字符0次或者1次{m,n}匹配其前面的字符至少m次,至多n次{m,}最少m次,最多不限{m}出现m次 位置锚定含义^锚定行首$锚定行尾^$空白行分组引用
强大的文版搜索工具,能通过正则表达式搜索文件中的内容。 命令基本格式: grep [OPTION]… PATTERN [FILE]… grep 【选项】 匹配内容 文件…
常用选项:
##grep的常用选项 grep -i 忽视字符大小写 -v 显示没有被模式匹配到的行 -o 只显示被模式匹配到的部分 -A n 不仅显示匹配到的那一行,也将后面n行显示出来 -B n ...也将前面n行显示出来 -C n ...前后都显示n行 -n 标识出该列的编号 grep -E 相当于egrep fgrep 快速搜索,不支持正则表达式 exp: grep "hello" text.txt 显示出 hello 所在的行的内容sed命令是行处理命令。sed命令把要处理的行放到内存中处理,这个内存称为模式空间。使用sed命令默认不编辑源文件,只将需要处理的行进行处理。处理结束后默认将模式空间打印到屏幕上。 命令格式: sed [options] ‘Address Command’ files…
options: -n 静默方式,不再显示默认空间中的行。 -i 修改源文件。这个命令会修改源文件。
Address:要处理的位置 1、startline,endline 。开始行,结束行 $表示最后一行,$-1表示倒数第二行 2、/RegExp/ 正则表达式指定的格式。例如/hello/表示以hello开头的行。 3、/pattern1/,/pattern2/* 第一次被模式匹配到的行到第二次被模式匹配到的行 4、LineNumber 指定的行 5、startline ,+N 从start开始到向后的N行
Command:要处理的命令
d 删除符合条件的行 sed "1,2d" files 删除files的第一到第二行 sed "$d" files 删除文件的最后一行 sed '/^hello/'d files 删除以hello开头的行 s 替换命令 's/pattern/string/修饰符' sed 's/book/books/g' file 将file中的book替换为books 修饰符g s命令默认只替换每行第一个被匹配到的位置。使用g命令用于全局替换 修饰符Ng sed 's/book/books/3g' 从第三处匹配开始替换 修饰符i 忽略大小写 sed 's/\\\\/\//g'。 将\\替换为/。也可使用'###,$$$,%%%'等定界符进行分割。可以改为's#\\\\#\/#'增加命令可读性 sed 's#\(love\)able#\1rs#g' 将loveable改为lovers.其中 \1 表示\(love\)匹配到的 sed "s/$test/hello/g".其中$test是变量。注意使用双引号 p 显示符合条件的行 sed "3,$" files 显示files的第三行到末尾 a\"string" 在指定的行后面添加文本。a\"string\nstring..." 可以添加多行 i\"string" 在指定的行前面添加文本 r file 将指定的文件file添加到指定的行后面。可以用来合并文件 sed -i "$r file" files 将file添加到files末尾后面。-i表示修改源文件 echo "hello" >1.txt echo "world" >2.txt sed -i '$r 2.txt' 1.txt 最后输出的文1.txt中包含hello world.(分两行) w file 将后面的文件添加进file。与r反过来 sed -i '$w 1.txt' 2.txt 和上面输出结果是一样的 q 退出 sed -n 'p;n' file 打印奇数行 sed -n 'n;p' file 打印偶数行