一些特殊的选项:
通常,第一个非选项的参数会指定要匹配的模式。你也可以提供多个模式,只要将它们放在引号里并以换行符分割他们。模式以减号开头时,grep会混淆,而将它视为选项。这就是-e选项排上用场的时候。他可以提供其参数为模式---即使它以减号开头。
例一:
grep -e 'boy' -e '^abc' test_grep.txt #abc def hic lmn abc #You are a good boy
使用-e可以以此匹配多个模式。
例二:
cat test_grep2.txt
-v
-l
-F
-f
grep '-v' test_grep2.txt 此时光标停在第二行,没有找到匹配行。这是因为grep将“-v”当做了选项,将test_grep2.txt当做了要匹配的模式,等在要求匹配的文件,因此在等待。此时用-e可以解决了
grep -e '-v' test_grep2.txt # -v
可以将所有匹配模式写到一个文件中,用-f选项后面跟上此文件,这样可以一次匹配多个模式。
cat pat_file
good
boy
linux查找文本命令 grep
cat test_grep.txt
abc def hic lmn abc
123 456 1.23 4.5 321
ABC Def hIc lmN ABC
ABC Def hIc lmN dsf
A BC Def hIc lmN ABC
You are a good boy
you are a good girl
you are not a good girl
That's a very lovely dog
例一:
grep -c 'good' test_grep.txt #3 cat test_grep.txt | grep 'good' | wc -l #3
这两种方法都可以统计含有‘good’的行数,但是第一种方法明显更简练。
例二:
grep -i 'abc' test_grep.txt #abc def hic lmn abc #ABC Def hIc lmN ABC #ABC Def hIc lmN dsf #A BC Def hIc lmN ABC
grep使用的正则表达式没有像其他语言那样的修饰符,如i,s,m。对于忽略大小写的匹配,可以用选项-i实现。
显示匹配一个或多个模式的文本行。grep命令在一个或多个文件中查找某个字符模式。如果这个模式中包含空格,就必须用引号把它括起来。grep命令中,模式可以是一个被引号引起了的字符串,也可以是单个词,位于文件后的所有单词都会被认为是文件名。grep将输出发送到屏幕,他不会对输入文件做任何修改和变化。 时常会作为管道的第一步,以便对匹配的数据作进一步处理。
grep
最早的文本匹配程序,所使用POSIX定义的基本正则表达式(Basic Regular Expression, BRE)
egrep
扩展式grep这个程序使用的是扩展的正则表达式(Extended Regular Expression, ERE)——这是一套功能更强大的正则表达式,
使用它的代价就是会消耗更多的运行资源。在早期出现的PDP-11的机器上,这点事关重大,不过以现在的系统而言,在性能影响上几乎没有太大的差别。
fgrep
快速grep(fast grep)。这个版本匹配固定字符串而非正则表达式,它使用游湖的算法,能更有效的匹配固定字符串。也就是说
,grep和egrep智能匹配单个正则表达式,儿fgrep使用不同的算法,却能匹配过个字符串,有效地测试每个输入行里,是否有匹配的查找字符串。
所谓值传递,就是说仅将对象的值传递给目标对象,就相当于copy;系统将为目标对象重新开辟一个完全相同的内存空间。
所谓引用,就是说将对象在内存中的地址传递给目标对象,就相当于使目标对象和原始对象对应同一个内存存储空间。此时,如果对目标对象进行修改,内存中的数据也会改变。
php的引用(就是在变量或者函数 、对象等前面加上&符号)
在PHP 中引用的意思是:不同的名字访问同一个变量内容.
与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址
变量的引用
PHP 的引用允许你用两个变量来指向同一个内容
$a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b="EFG"; echo $a;//这里$a的值变为EFG 所以输出EFG echo $b;//这里输出EFG
函数的传址调用
传址调用我就不多说了 下面直接给出代码
function test(&$a) { $a=$a+100; } $b=1; echo $b;//输出1 test($b); //这里$b传递给函数的其实是$b的变量内容所处的内存地址, //通过在函数里改变$a的值 就可以改变$b的值了 echo "\n"; echo $b;//输出101
要注意的是,在这里test(1);的话就会出错,原因自己去想
centos5.4 源码包安装LAMP
1.卸载旧的lamp环境
命令:rpm -qa | grep httpd
说明:查看是否安装了httpd软件包
命令:netstat -tnl
说明:查看现在端口的状态,主要关注80端口(apache) 3306端口(mysql)
命令:rpm -e httpd-2.2.3-31.el5.centos --nodeps
命令:rpm -e httpd-manual-2.2.3-31.el5.centos --nodeps
命令:rpm -e system-config-httpd-1.3.3.3-1.el5 --nodeps
说明:卸载软件包, --nodeps 如果有连带关系,也强制卸载
命令:cd /etc/httpd/
命令:rm -rf *
说明:到原来的apache安装目录下,将其所有的安装目录和文件都删掉
命令:rpm -qa | grep mysql
命令:rpm -e mysql-5.0.77-3.el5 --nodeps
说明:卸载mysql
命令: rpm -qa | grep php
命令: rpm -e php-ldap-5.1.6-23.2.el5_3 --nodeps
命令: rpm -e php-cli-5.1.6-23.2.el5_3 --nodeps
命令: rpm -e php-common-5.1.6-23.2.el5_3 --nodeps
命令: rpm -e php-5.1.6-23.2.el5_3 --nodeps
说明:卸载PHP
2.安装LAMP
(1).安装libxml2
cd libxml2-2.7.8/
./configure --prefix=/usr/local/libxml2
make && make install