zoukankan      html  css  js  c++  java
  • Linux下vi替换字符命令操作实例

            在Linux下的开发中,经常涉及到对文件里的字符进行处理,当中,对字符的替换操作也是非常的频繁。

            本文以一个实际的文件为例,具体介绍了Linux下经常使用的vi替换字符命令,为相关的开发工作提供给了參考。

     

            本文中被操作的文件为TestFile.txt,当中的内容例如以下:

            zhou@linux:~/zhouzx/Test> cat TestFile.txt

              12345678907890

              ABCDABCDEFGHIJ

              12345^&*()()

              98765432103210

              abcdabcdefghij123123

     

           先进入vi编辑模式,例如以下:

           zhou@linux:~/zhouzx/Test> vi TestFile.txt

     

            依次运行下面替换命令(注意:每条命令都要以冒号“:”开头),当中替换部分用红色字体标注。

            1) :n,$s/str1/str2/

            将第n行開始到最后一行中每一行的第一个str1替换为str2

            比如。在TestFile.txt文件的vi编辑模式下运行:

            :2,$s/123/321/

            文件内容变为:

            12345678907890

              ABCDABCDEFGHIJ

              32145^&*()()

              98765432103210

              abcdabcdefghij321123

           可见。仅仅有第三行和第五行的第一个“123”变成了“321”。第一行的“123”没有被替换。由于命令是从第二行開始运行的。

     

            2) :n,$s/str1/str2/g

            将第n行開始到最后一行中每一行全部str1替换为str2

            紧接着上一条命令运行:

            :2,$s/3210/1234/g

            文件内容变为:

            12345678907890

              ABCDABCDEFGHIJ

              32145^&*()()

              98765412341234

              abcdabcdefghij321123

            可见。从第二行開始的全部的“3210”都变成了“1234”。

     

            3) :%s/str1/str2/

            将每一行的第一个str1替换为str2

            紧接着上一条命令运行:

            :%s/123/321/

            文件内容变为:

            32145678907890

              ABCDABCDEFGHIJ

              32145^&*()()

              98765432141234

              abcdabcdefghij321321

            可见,每一行的第一个“123”都变成了“321”。

     

            4) :%s/str1/str2/g

            将每一行中全部str1替换为 str2

            紧接着上一条命令运行:

            :%s/890/098/g

            文件内容变为:

            32145670987098

              ABCDABCDEFGHIJ

              32145^&*()()

              98765432141234

              abcdabcdefghij321321

            可见,每一行的全部“890”都变成了“098”。

     

            5) :s/str1/str2/

            将行中首次出现的字符串str1用字符串str2替换。

            紧接着上一条命令运行:

            :s/098/890/

            文件内容变为:

            32145678907098

              ABCDABCDEFGHIJ

              32145^&*()()

              98765432141234

              abcdabcdefghij321321

            可见。仅仅有第一行的第一个“098”变成了“890”。

     

            6) :s/str1/str2/g

            将行中全部出现的字符串str1用字符串str2替换。

            紧接着上一条命令运行:

            :s/321/123/g

            文件内容变为:

            12345678907098

              ABCDABCDEFGHIJ

              32145^&*()()

              98765432141234

              abcdabcdefghij321321

            可见。第一行的全部“321”变成了“123”。

     

            7) :.,$ s/str1/str2/g

            将正文当前行到末尾全部出现的字符串str1用字符串str2替换。

            紧接着上一条命令运行:

             :.,$ s/1/2/g

            文件内容变为:

            22345678907098

              ABCDABCDEFGHIJ

              32245^&*()()

              98765432242234

              abcdabcdefghij322322

            可见。全部的“1”都变成了“2”。

     

            8) :1,$ s/str1/str2/g

            将正文中全部出现的字符串str1用字符串str2替换。

            紧接着上一条命令运行:

            :1,$ s/22/33/g

            文件内容变为:

            33345678907098

              ABCDABCDEFGHIJ

              33345^&*()()

              98765433343334

              abcdabcdefghij333333

            可见,全部的“22”都变成了“33”。

     

            9) :g/str1/s//str2/g

            将正文中全部出现的字符串str1用字符串str2替换。

            紧接着上一条命令运行:

            :g/33/s//22/g

            文件内容变为:

            22345678907098

              ABCDABCDEFGHIJ

              22345^&*()()

              98765422342234

              abcdabcdefghij222222

            可见,全部的“33”都变成了“22”。

     

            从以上替换命令的运行能够看出:

            1) 全部命令都要以冒号“:”开头。

            2) 全部命令既能够替换单个的字符。也能够替换字符串。

            3) 假设“g”放在命令末尾。表示对搜索字符串的每次出现进行替换;假设不加“g”。表示仅仅对搜索字符串的首次出现进行替换;而假设“g”放在了命令开头。表示对正文中全部包括搜索字符串的行进行替换操作。

     

            Linuxvi替换字符命令有非常多种,作为一名合格的软件开发project师。一定要熟练掌握常见字符替换命令的使用方法。

    (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426。欢迎关注!

    )

  • 相关阅读:
    0593. Valid Square (M)
    0832. Flipping an Image (E)
    1026. Maximum Difference Between Node and Ancestor (M)
    0563. Binary Tree Tilt (E)
    0445. Add Two Numbers II (M)
    1283. Find the Smallest Divisor Given a Threshold (M)
    C Primer Plus note9
    C Primer Plus note8
    C Primer Plus note7
    C Primer Plus note6
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5143966.html
Copyright © 2011-2022 走看看