-----------------------------------------------------------------------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 用法----------------------------------------------: