• 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。欢迎关注!

    )

  • 相关阅读:
    HDU--2546 饭卡(01背包)
    UVA--562 Dividing coins(01背包)
    UVA--624 CD(01背包+路径输出)
    PKU--3628 Bookshelf 2(01背包)
    ExecutorService介绍2
    ExecutorService介绍
    mac下设置命令别名
    如何在sourcetree 下提交代码到gerrit上
    vim下如何删除某行之后的所有行
    VMware网络设置的三种方式
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5143966.html
Copyright © 2020-2023  润新知