二、cut paste sed grep的用法
时间:2009-01-13 来源:qqliu001
1 cut
cut是从数据文件或命令的输出中析取各种各样的数据域。 1) cut -cchars file
[pvg@server ~]$ who |
[pvg@server ~]$ who | cut -c1-4,18- |
2)cut -ddchar -ffields file
其中:dchar是分隔符(默认的字段是制表符),fields是析取的字段
[pvg@server ~]$ cut -d: -f1,7 /etc/passwd |
/*分隔符是:,析取第1个和7个字段*/
2 paste
paste刚好与cut相反,把多行和在一起。
1)paste -ddchar file
其中:dchar是分隔符(默认的字段是制表符)
[pvg@server ~]$ cat name |
同一文件的行粘帖在一起
[pvg@server ~]$ paste -s name | cat |
3 sed
sed是一个非交互性的文本编辑器。它编辑文件或标准输入导出的文件拷贝。所以,它不与初始的文件打交道,所有的改动输出到屏幕或重定向到文件。
格式为:
sed [options] '{command}' [filename]
1) 修改
A 替换 's/{old value}/{new value}/'
[pvg@server ~]$ echo The tiger cubs will meet on Tuesday after school | sed 's/tiger/wolf/' |
a)第一种是使用 "-e" 选项,它通知程序使用了多条编辑命令。
[pvg@server ~]$ echo The tiger cubs will meet on Tuesday after school | sed -e 's/tiger/wolf/' -e's/after/before/' |
[pvg@server ~]$ echo The tiger cubs will meet on Tuesday after school | sed 's/tiger/wolf/; s/after/before/' |
C 全局修改
sed 编辑器在找到一个要修改的项目并作了修改之后继续处理下一行,而不读整行。
[pvg@server ~]$ cat test |
[pvg@server ~]$ cat test | sed 's/line/LINE/g' |
2) -n选项
[pvg@server ~]$ sed -n '1,2p' test |
[pvg@server ~]$ sed -n '/line3/p' test |
3) 删除行
[pvg@server ~]$ sed -n '1,2d' test |
4)基本sed编辑命令:
sed编辑命令
p 打印匹配行
= 显示文件行号
a\ 在定位行号后附加新文本信息
i\ 在定位行号后插入新文本信息
d 删除定位行
c\ 用新文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文件中读文本
w 写文本到一个文件
q 第一个模式匹配完成后推出或立即推出
l 显示与八进制ASCII代码等价的控制字符
{ } 在定位行执行的命令组
n 从另一个文件中读文本下一行,并附加在下一行
g 将模式2粘贴到/pattern n/
y 传送字符
n 延续到下一输入行;允许跨行的模式匹配语句
4 grep
grep命令可以从一个文件或多个文件中搜索特定的字符串。其格式为:
grep pattern files
如:grep shell ed.cmd
1、参数:
grep -i pattern files :不区分大小写地搜索,默认情况区分大小写。
grep -v pattern files :查找不包括字符串的行。
grep -n pattern files :符合指定的模块的每一行前加上改行在文件中对应的行号。
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
2、grep正则表达式
1)$ grep '^a'
只显示以a开头的行。
2)$ grep 'test' d*
显示所有以d开头的文件中包含test的行。
3)$ grep 'test' aa bb cc
显示在aa,bb,cc文件中匹配test的行。
3)$ grep '[a-z]\{5\}' aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
4)$ grep 'w\(es\)t.*\1' aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(\1),找到就显示该行
。如果用egrep或grep -E,就不用"\"号进行转义,直接写成'w(es)t.*\1'就可以了。
5) $
锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
6).
匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
7)*
匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。
8)[]
匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
9)[^]
匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行。
10)\(..\)
标记匹配字符,如'\(love\)',love被标记为1。
11)x\{m\}
重复字符x,m次,如:'o\{5\}'匹配包含5个o的行。
12)x\{m,\}
重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
13)x\{m,n\}
重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。