zoukankan      html  css  js  c++  java
  • 短期快速学习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 用法----------------------------------------------:

    李世侠,网名caibird2005 , initdba , 战神

    MySQL DBA经验6年;

    Oracle DBA经验10年;

    精通MySQL HA架构,复制,备份,恢复,SQL优化;

    熟悉SHELL编程、Python编程、SQL&PL/SQL编程;

    MySQL OCP课程讲师;

    ORACLE官方认证OCM证书;

    BLOG: http://www.cnblogs.com/caibird2005 

              http://www.initdba.cn 

    Wechat: caibird2005 

    TEL :+86-186-5881-5300 +86-180-7290-8651 

  • 相关阅读:
    一些python练习题
    爬取某房源网数据
    练习1:定义 is_Even 函数,传一 int 参数,判断是否是偶数,return True;不是,return False
    pycharm中tkinter 不显示窗口
    保护眼睛颜色的RGB数值
    Python study----------class的实例化
    HTML----------STUDY
    Python study----------字典 popitem()
    Python study----------Python搜索路径
    Python study----------第三方module-----chardet(识别编码)
  • 原文地址:https://www.cnblogs.com/caibird2005/p/1435864.html
Copyright © 2011-2022 走看看