文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>二、cut paste sed grep的用法

二、cut paste sed grep的用法

时间:2009-01-13  来源:qqliu001

1 cut

cut是从数据文件或命令的输出中析取各种各样的数据域。 1) cut -cchars file

[pvg@server ~]$ who
root :0 Dec 17 13:32
root pts/1 Dec 17 13:33 (:0.0)
pvg pts/2 Dec 23 15:19 (192.168.18.150)
[pvg@server ~]$ who | cut -c1-4
root
root
pvg

/*析取第1个到第4个字符*/

[pvg@server ~]$ who | cut -c1-4,18-
root Dec 17 13:32
root Dec 17 13:33 (:0.0)
pvg Dec 23 15:19 (192.168.18.150)

/*析取第1个到第4个字符和 第18个后的所有的字符*/

2)cut -ddchar -ffields file
其中:dchar是分隔符(默认的字段是制表符),fields是析取的字段

[pvg@server ~]$ cut -d: -f1,7 /etc/passwd
root:/bin/bash
bin:/sbin/nologin
...

/*分隔符是:,析取第1个和7个字段*/

2 paste

paste刚好与cut相反,把多行和在一起。
1)paste -ddchar file
其中:dchar是分隔符(默认的字段是制表符)

[pvg@server ~]$ cat name
Tony
Lucy
Fred
[pvg@server ~]$ cat number
(100) 100-100
(101) 400-402
(102) 500-302
[pvg@server ~]$ paste -d':' name number | cat
Tony:(100) 100-100
Lucy:(101) 400-402
Fred:(102) 500-302

2) paste -ddchar -s file
同一文件的行粘帖在一起

[pvg@server ~]$ paste -s name | cat
Tony Lucy Fred

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/'
The wolf cubs will meet on Tuesday after school

B 多次修改
a)第一种是使用 "-e" 选项,它通知程序使用了多条编辑命令。

[pvg@server ~]$ echo The tiger cubs will meet on Tuesday after school | sed -e 's/tiger/wolf/' -e's/after/before/'
The wolf cubs will meet on Tuesday before school

b)分号来分隔命令。注意分号必须是紧跟斜线之后的下一个字符。如果两者之间有一个空格,操作将不能成功完成。 

[pvg@server ~]$ echo The tiger cubs will meet on Tuesday after school | sed 's/tiger/wolf/; s/after/before/'
The wolf cubs will meet on Tuesday before school


C 全局修改
sed 编辑器在找到一个要修改的项目并作了修改之后继续处理下一行,而不读整行。

[pvg@server ~]$ cat test
1 line line1
2 line line2
3 line line3
4 line line4
[pvg@server ~]$ cat test | sed 's/line/LINE/'
1 LINE line1
2 LINE line2
3 LINE line3
4 LINE line4

这意味着它们都处理每一行中出现的第一个选定序列。为了替换在同一行中出现多次出现的项目,必须指定在全局进行该操作。

[pvg@server ~]$ cat test | sed 's/line/LINE/g'
1 LINE LINE1
2 LINE LINE2
3 LINE LINE3
4 LINE LINE4


2) -n选项

[pvg@server ~]$ sed -n '1,2p' test
1 line line1
2 line line2

/*只显示1~2行*/

[pvg@server ~]$ sed -n '/line3/p' test
3 line line3

/*只显示含有line3行*/

3) 删除行 

[pvg@server ~]$ sed -n '1,2d' test

/*只删除1~2行*/

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的行。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载