“常用命令”的版本间差异
跳到导航
跳到搜索
无编辑摘要 |
(→sed) |
||
第29行: | 第29行: | ||
==sed== |
==sed== |
||
sed命令参见 http://dev.firnow.com/course/3_program/shell/shelljs/20090307/159092.html |
|||
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。 |
|||
sed可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。 |
|||
sed不改变文件内容,只对终端流起作用,因此输出重定向 |
|||
*sed 's/txt/dat/g' filename |
*sed 's/txt/dat/g' filename |
||
:将filename中的txt 替换成 dat |
:将filename中的txt 替换成 dat |
||
第35行: | 第43行: | ||
*sed -e s'/^[0-9]\{1,\}://g' file |
*sed -e s'/^[0-9]\{1,\}://g' file |
||
:去掉文件中到行号和冒号 |
:去掉文件中到行号和冒号 |
||
*sed '$d' filename1 > filename2 |
|||
:删除文件最后一行 (head -n-1 input.file > output.file) |
|||
*sed '2d' example-----删除example文件的第二行。*sed '2,$d' example-----删除example文件的第二行到末尾所有行。 |
|||
*sed '/test/'d example-----删除example文件所有包含test的行。 |
|||
:/*/ 匹配符 |
|||
:^ 锚定行的开始 如:/^sed/匹配所有以sed开头的行。 |
|||
:$ 锚定行的结束 如:/sed$/匹配所有以sed结尾的行。 |
|||
:因此 sed /^$/d filename :删除文件中的空行 |
|||
==专题== |
==专题== |
2013年12月19日 (四) 08:19的版本
umask
umask是对权限的过滤器,因此它的工作方式和chmod恰好相反。全部权限等价与777(rwxrwxrwx),umask值0222(-w--w--w-)则代表权限555(r-xr-xr-x)
grep
- grep -nH "keywords" *.pro ;检索关键词
cat
- cat file1 file2 | sort | uniq
- 取出两个文件的并集(重复的行只保留一份)
- cat file1 file2 | sort | uniq -d
- 取出两个文件的交集(只留下同时存在于两个文件中的文件)
- cat file1 file2 | sort | uniq -u
- 删除交集,留下其他的行
- cat file1 file2 > file3
- paste file2 to the end of file1 and write to file3
- paste 将两file横向合并
tr
- tr -d ' ' < test.txt >> test2.txt
- 删除 test.txt 中间所有的空格,输出至test2.txt
- tr ' ' ‘ *’ < test.txt >> test2.txt
- 替换 test.txt 中间所有的空格为*,输出至test2.txt
- Note: 输出必须重定向,可能效果没有sed好
sed
sed命令参见 http://dev.firnow.com/course/3_program/shell/shelljs/20090307/159092.html
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。
sed可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。 sed不改变文件内容,只对终端流起作用,因此输出重定向
- sed 's/txt/dat/g' filename
- 将filename中的txt 替换成 dat
- 注:filename 中的内容并没有变。如果要改变,需要重定向
- sed -e s'/^[0-9]\{1,\}://g' file
- 去掉文件中到行号和冒号
- sed '$d' filename1 > filename2
- 删除文件最后一行 (head -n-1 input.file > output.file)
- sed '2d' example-----删除example文件的第二行。*sed '2,$d' example-----删除example文件的第二行到末尾所有行。
- sed '/test/'d example-----删除example文件所有包含test的行。
- /*/ 匹配符
- ^ 锚定行的开始 如:/^sed/匹配所有以sed开头的行。
- $ 锚定行的结束 如:/sed$/匹配所有以sed结尾的行。
- 因此 sed /^$/d filename :删除文件中的空行