短期快速学习LINUX,涉及vi用法,管道,标准输入、输出和错误,grep 用法

-----------------------------------------------------------------------vi用法--------------------------------------------------
kjhl   上下左右
w,b------使光标向前或向后跳过一个单词

/word → 向光标之下查找一个名称为 word 的字符串。如想查找 eric4ever 字符串,输入 /eric4ever 即可
?word → 向光标之上查找一个名称为 word 的字符串

$ → 移动到这一行的最后面字元处

:n1,n2s/word1/word2/g → n1 与 n2 均为数字。在第 n1 与 n2 行之间查找 word1 字符串,并将该字符串替换为 word2。
如:在 1 到 9 行之间查找 eric4ever 并替换为 ERIC4EVER 则:『:1,9s/eric4ever/ERIC4EVER/g』
1,5s/dmp/DMP/g

:1,$s/word1/word2/g → 从第一行到最后一行查找 word1 字符串,并将该字符串替换为 word2
:1,$s/word1/word2/gc → 从第一行到最后一行查找 word1 字符串,并将该字符窗替换为 word2,替换前显示提示对话框是否确认替换

删除、复制与粘贴
d$   删除光标所在处到行尾的所有字符
yy → 复制光标所在的那一行
nyy → n 为数字。复制光标所在的向下 n 列

p, P → p 为将已复制的内容粘贴在光标下一行上,P 则为粘贴在光标的上一行

. → 小数点,意思是重复前一个动作

:w → 将编辑的文件写入到硬盘上
:q → 退出 vi
:wq → 保存后退出,若为 :wq! 则为强制保存为退出
:set nu → 显示行号
:set nonu → 取消显示行号

编辑模式
i, I → 插入:在目前的光标所在处插入输入的文字,已存在的文字会向后退; 其中, i 为『从目前光标所在处插入』,
         I 为『在目前所在行的第一個非空白字元处开始插入』
a, A → a 为『从目前光标所在的下一个字元处开始插入』, A 为『从光标所在行的最后一个字元处开始插入』
o, O → o 为『在目前光标所在的下一行处插入新的一行』, O 为『在目前光标所在处的上一行插入新的一行』
r, R → r 为『取代光标所在的那一个字元』, R 为『一直取代光标所在的文字,直到按下 ESC 为止』

Ctrl+G-----光标所在位置的行数和列数报告 

删除文件do1.par中空白行
cat do1.par |grep -v '^$'

在每一行的行尾添加东西HELLO
%s/$/HELLO/g

在指定行的到文件末尾的头部加内容
3,$s/^/Hello/g

同时编辑两个文件,在两个文件中拷贝剪贴文本 
      vi file1 file2
      :n 切换到文件2 (n=next) 
      :N 切换回文件1 

替换文件中的路径 
      :%s#/usr/bin#/bin#g 把文件中所有路径/usr/bin换成/bin 
      或者用 
      :%s/\/usr\/bin/\/bin/g 在'/'前用\符号指出'/'是真的单个字符'/' 

-----------------------------------------------------------------------vi用法--------------------------------------------------
---------------------------------------------------------管道---------------------------------------------------------
awk
df |awk '{print $1}'

显示分区名称
df -k | awk '{print $1}' | sed s'/\/dev\///g'  

我们先对一个文件进行排序,然后通过管道输送到打印机
sort myfile | lp

既显示,有添加到文本do2.par
who | tee -a do2.par
---------------------------------------------------------管道---------------------------------------------------------

----------------------------标准输入、输出和错误-------------------------------------------
command < filename >filename2 把c o m m a n d命令以f i l e n a m e文件作为标准输入,以f i l e n a m e 2文件作为标准输出

标准输入是文件描述符0
标准输出是文件描述符1
标准错误是文件描述符2

重定向符号一定要离开s o r t命令两个空格,否则该命令会把它当作输入文件。
$ cat passwd | awk -F: '{print $1}' | sort  1>sort.out
等效于
$ cat passwd | awk -F: '{print $1}' | sort >sort.out

command <&- 把关闭标准输入

重定向操作符command << delimiter是一种非常有用的命令,通常都被称为“此处”文挡。
可以任意定义分界符d e l i m i t e r,最常见的是E O F
 cat >>myfile<<EOF
 I am using a $TERM Terminal
 my user name is $LOGNAME
 bye...
 EOF

该脚本的第一行把文件描述符4(实际上我可以在4到9之间任意选择一个数字)
指定为标准输入,然后打开test . txt文件。接下来两行的
作用是读入了两行文本。接着,作为标准输入的文件描述符4被关闭。最后,l i n e 1和l i n e 2两个
变量所含有的内容被回显到屏幕上
exec 4<&0 0<test.txt
read line1
read line2
exec 0<&4
echo $line1
echo $line2
----------------------------标准输入、输出和错误-------------------------------------------

------------------------------------------grep 用法----------------------------------------------:
\(..\)
标记匹配字符,如'\(love\)',love被标记为1。

锚定单词的开始    \<
锚定单词的结束,\>      如'grep\>'匹配包含以grep结尾的单词的行。

x\{m\}

重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。

x\{m,\}

重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。

x\{m,n\}

重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。

\w

匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

\W

\w的反置形式,匹配一个或多个非单词字符,如点号句号等。

\b

单词锁定符,如: '\bgrepb\'只匹配grep。

$ grep 'test' d*

显示所有以d开头的文件中包含test的行。

$ grep 'test' aa bb cc

显示在aa,bb,cc文件中匹配test的行。

$ grep '[a-z]\{5\}' aa

显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

   
    grep 's\(et\)q' \1 .emacs

如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(\1),
找到就显示该行。如果用egrep或grep -E,就不用"\"号进行转义,直接写成'w(es)t.*\1'就可以了。

------------------------------------------grep 用法----------------------------------------------:

posted @ 2009-04-14 18:54  李世侠  阅读(1391)  评论(0编辑  收藏  举报