溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

#13 yum、編譯安裝與sed命令的使用

發(fā)布時(shí)間:2020-06-14 07:14:08 來(lái)源:網(wǎng)絡(luò) 閱讀:616 作者:誰(shuí)等了誰(shuí) 欄目:建站服務(wù)器

Linux程序包管理之二

  程序包管理的前端工具:

    CentOS系,yum,dnf


  yum:

    Yellowdog Updater Modified

    Yellowdog是一款發(fā)行版linux,使用rpm作為默認(rèn)的程序包管理工具


    URL: yum定位軟件倉(cāng)庫(kù)及倉(cāng)庫(kù)中程序包文件的主要標(biāo)識(shí)方式;

    schema://[username@]hostname[:port][/PATH/TO/DOCUMENT][parameters][method]

    web站點(diǎn):

      http/https

      http://www.163.com


    yum是C/S架構(gòu)的模型,其中服務(wù)器也稱為軟件倉(cāng)庫(kù)(yum repository),客戶端需要書寫URL以指定服務(wù)器及程序包路徑;


    在服務(wù)器上,軟件倉(cāng)庫(kù)其實(shí)就是一個(gè)目錄,在目錄中包含了程序包文件及元數(shù)據(jù)文件;

    元數(shù)據(jù)文件統(tǒng)一的存放于repodata的目錄中;也可以說(shuō),repodata目錄所在的路徑即為軟件倉(cāng)庫(kù)的路徑;


    createrepo命令:

      createrepo - Create repomd (xml-rpm-metadata) repository

      createrepo [options] <directory>

        <directory>:存放程序包的目錄


    客戶機(jī)的使用:

      yum程序包

      yum的主配置文件:/etc/yum.conf

        ini風(fēng)格的配置信息模式:分段式配置內(nèi)容

          [repositoryid]

          statements


      注意:所有的配置語(yǔ)句,其生效的范圍是從一個(gè)[]開始,到下一個(gè)[]結(jié)束

    例如:

      [repo1]

      statements 


      [repo2]

      statements


      注意:

        1.repositoryid必須全局唯一

        2.repositoryid不能包括除了.和_之外的任何特殊字符,可以包含字母和數(shù)字,字母嚴(yán)格區(qū)分大小寫機(jī)制;


    /etc/yum.conf文件的內(nèi)容

[main]

cachedir=/var/cache/yum/$basearch/$releasever

keepcache=0

debuglevel=2

logfile=/var/log/yum.log

exactarch=1

obsoletes=1

gpgcheck=1

plugins=1

installonly_limit=5

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum

distroverpkg=centos-release


想要更加全面的信息,可以使用man 5 yum.conf獲??;


# PUT YOUR REPOS HERE OR IN separate files named file.repo in /etc/yum.repos.d

  用戶自定義的repository的指向信息,可以寫在主配置文件中;也可以將用戶自定義的repository的指向信息,以.repo為文件后綴名,并且存放于/etc/yum.repos.d目錄中;

  主配置文件:

    /etc/yum.conf

    只提供yum倉(cāng)庫(kù)指向信息的公共配置內(nèi)容;

    注意:該文件一般情況下,不進(jìn)行任何修改;

  片段配置文件:

    /etc/yum.repos.d/*.repo

    每一個(gè)以.repo為后綴名的文件,即為一個(gè)倉(cāng)庫(kù)文件;這樣的每個(gè)文件中可以配置指向一個(gè)或多個(gè)yum倉(cāng)庫(kù);


    yum程序在查找yum倉(cāng)庫(kù)的時(shí)候,根據(jù)這些配置文件來(lái)查找的;每一次可能會(huì)找到多個(gè)yum倉(cāng)庫(kù),從所有可以使用的倉(cāng)庫(kù)中查找最新版本的程序包并緩存到本地進(jìn)行安裝,升級(jí)等操作;


    同類的多個(gè)倉(cāng)庫(kù)被稱為鏡像;只要有一個(gè)可用即可;

    不同類的倉(cāng)庫(kù)也可以同時(shí)存在多個(gè),yum可以同時(shí)使用這些倉(cāng)庫(kù);


.repo文件該如何定義:

[repositoryid]

name=Full name of repository

baseurl=schema1://hostname/PATH/TO/REPODATA

        schema2://hostname/PATH/TO/REPODATA

        schema3://hostname/PATH/TO/REPODATA

        schema4://hostname/PATH/TO/REPODATA

  schema:

    http[s]、ftp、nfs:網(wǎng)絡(luò)服務(wù)器指向

    file:本地服務(wù)器指向

#mirrorlist=mirror_url

enabled={0|1},0表示禁用此倉(cāng)庫(kù)指向,1表示啟用;如果沒(méi)有enabled語(yǔ)句,默認(rèn)為啟用狀態(tài);

gpgcheck={0|1},0表示不進(jìn)行程序包認(rèn)證,1表示認(rèn)證;如果為1,需要指定認(rèn)證所需要的公鑰文件,需要使用gpgkey語(yǔ)句;

gpgkey=schema://hostname/PATH/TO/PUBLIC_KEY_FILE

  例子:gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever


failovermethod={roundrobin|priority}

  故障倒換方法:

    roundrobin:隨機(jī)查找,默認(rèn)的方法;

    priority:按照順序依次選擇

enablegroups={1|0}

cost=num,默認(rèn)所有倉(cāng)庫(kù)的開銷值都是1000;


一般的repo指向內(nèi)容:

[repoid]

name=

baseurl=

#mirrorlist=

enbaled=1

gpgcheck=0

#gpgkey=


yum命令的用法:

  yum - Yellowdog Updater Modified

  yum [options] [command] [package ...]

    [options]:

      -y, --assumeyes:對(duì)于yum執(zhí)行過(guò)程中與用戶交互的問(wèn)題,全部以yes回答

      -q, --quiet:安靜模式,在某一次yum執(zhí)行過(guò)程中,沒(méi)有任何信息輸出到stdout;

      --enablerepo=repoidglob

      --disablerepo=repoidglob

        在某一次yum執(zhí)行過(guò)程中明確的規(guī)定啟用或禁用某個(gè)repository指向;在使用了這樣的選項(xiàng)之后,倉(cāng)庫(kù)指向文件中的enabled語(yǔ)句的作用將失效;

      --noplugins:

        在某一次yum執(zhí)行過(guò)程中,明確指出不使用任何插件;

      --nogpgcheck:

        在某一次yum執(zhí)行過(guò)程中,明確指出不驗(yàn)證程序包完整性,在倉(cāng)庫(kù)指向文件中的gpgcheck=1語(yǔ)句會(huì)失效;


    [command]

      command is one of:

        * install package1 [package2] [...]

          安裝程序包

          注意:

            1.如果只是給出程序包名稱,yum搜索所有倉(cāng)庫(kù),并找到最新版本緩存安裝;

            2.如果給出程序包的名稱及版本,則查找安裝指定版本的程序包;

            3.如果給出的程序包是完整的程序包名,則只是查找某一個(gè)程序包;

            4.程序包名稱可以使用globbing,(* ? [] [^])


        * update [package1] [package2] [...]

        * update-to [package1] [package2] [...]

        * check-update

        * upgrade [package1] [package2] [...]

        * upgrade-to [package1] [package2] [...]

        * downgrade package1 [package2] [...]

          程序包升級(jí)或降級(jí):

            程序包不同版本之間的更迭;


        * remove | erase package1 [package2] [...]

          卸載程序包:  


        * list [...]

            yum list LIST OPTIONS

            LIST OPTIONS:

              all: 顯示所有的程序包,包括已經(jīng)安裝的和尚未安裝但可用的;

                注意:

                  anaconda:CentOS系統(tǒng)的安裝器,在安裝操作系統(tǒng)的時(shí)候一并安裝的程序包;

              installed:顯示所有已經(jīng)安裝的程序包;

              available:顯示所有尚未安裝但可以安裝的程序包;

              updates:顯示所有可以升級(jí)更新的程序包;


        * info [...]

          yum info LIST OPTIONS

          LIST OPTIONS:

              all: 顯示所有的程序包,包括已經(jīng)安裝的和尚未安裝但可用的;

                注意:

                  anaconda:CentOS系統(tǒng)的安裝器,在安裝操作系統(tǒng)的時(shí)候一并安裝的程序包;

              installed:顯示所有已經(jīng)安裝的程序包;

              available:顯示所有尚未安裝但可以安裝的程序包;

              updates:顯示所有可以升級(jí)更新的程序包;


              name[globbing]


        * provides | whatprovides feature1 [feature2] [...]

          查看指定的特性是由哪個(gè)程序包提供的;


        * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

          清理本地緩存信息


        * makecache

          構(gòu)建緩存


        * groupinstall group1 [group2] [...]

        * groupupdate group1 [group2] [...]

        * grouplist [hidden] [groupwildcard] [...]

        * groupremove group1 [group2] [...]

        * groupinfo group1 [...]

          程序包組的管理命令:



        * search string1 [string2] [...]

          根據(jù)關(guān)鍵字進(jìn)行匹配,默認(rèn)情況下,搜索程序包名稱及匯總信息;

          模糊搜索


        * shell [filename]

          給yum提供一個(gè)交互式命令的操作界面


        * localinstall rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use install)

        * localupdate rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use update)

          實(shí)現(xiàn)本地程序包安裝,即:不依賴于軟件倉(cāng)庫(kù),直接對(duì)rpm格式包文件進(jìn)行操作;

          這兩個(gè)命令已經(jīng)被停用,使用install和update取代;


        * reinstall package1 [package2] [...]

          重新安裝


        * deplist package1 [package2] [...]

          顯示每個(gè)程序包所有的依賴關(guān)系;


        * repolist [all|enabled|disabled]

          列表顯示yum倉(cāng)庫(kù)的元數(shù)據(jù)信息

          在沒(méi)有給出后面的參數(shù)的時(shí)候,默認(rèn)為enabled;


        * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]


        * history [info|list|packages-list|packages-info|summary|addon-

       info|redo|undo|rollback|new|sync|stats]

          查看yum事務(wù)的歷史;

            安裝、升級(jí)、卸載等操作的時(shí)候,yum會(huì)開啟事務(wù);


        * load-transaction [txfile]

          重新啟動(dòng)已經(jīng)停止的事務(wù);


        * check


        * help [command]


CentOS7中的yum命令:

  程序包組的管理命令:

    * groups [...]

      groups {install | remove | list | info | update}


      別名:groupinstall groupremove grouplist groupinfo groupudpate


    * autoremove [package1] [...]

      自動(dòng)卸載:


    * repoinfo [all|enabled|disabled]


常用的第三方y(tǒng)um倉(cāng)庫(kù),F(xiàn)edora EPEL,

  到官方站點(diǎn)或鏡像站點(diǎn)中,下載epel-release程序包,并且使用rpm命令安裝至對(duì)應(yīng)的Linux發(fā)行版本,在/etc/yum.repos.d目錄中,會(huì)多出一個(gè)epel.repo的文件;更新repolist即可使用;


  要求Linux虛擬機(jī)能夠連接互聯(lián)網(wǎng);


yum的repo配置文件中的變量:

  $releasever:當(dāng)前操作系統(tǒng)的發(fā)行版本的主版本號(hào);

    如:CentOS 7.2-1511,其發(fā)行版本的主版本號(hào)是7

        CentOS 6.7,其發(fā)行版本的主版本號(hào)是6


  $basearch:當(dāng)前計(jì)算機(jī)所使用的基礎(chǔ)平臺(tái)架構(gòu)類型;

    如:Intel兼容機(jī)

          i686

          x86_64

        apple計(jì)算機(jī)設(shè)備

          ppc

          ppc64


  $arch:平臺(tái)架構(gòu)類型

  $YUM0~$YUM9:yum內(nèi)置的由用戶自定義的10個(gè)變量;


為什么要用這些變量?

  服務(wù)器(repository, 倉(cāng)庫(kù))必須能夠提供所有的常有發(fā)行版本及平臺(tái)相關(guān)的程序包;但是服務(wù)器無(wú)法預(yù)測(cè)任何一個(gè)客戶端具體的版本使用情況;


  所以讓用戶自行選擇:


  .repo

  baseurl=https://mirrors.aliyun.com/epel/7/x86_64


創(chuàng)建本地yum倉(cāng)庫(kù):

  createrepo /PATH/TO/PACKAGES


  yum-config-manager --add-repo=URL


CentOS程序包管理器之編譯安裝

  為什么要進(jìn)行源代碼編譯安裝?

    1.對(duì)應(yīng)的程序包并不能直接獲取到;

    2.已經(jīng)編譯好的二進(jìn)制中,尚不包含我們所需要的功能;

    3.已經(jīng)編譯好的二進(jìn)制中,包含的功能太多,我們并不需要;


  源代碼包有兩種:

    由程序員直接打包的源代碼:name-VERSION.tar.gz

    由第三方利用rpm工具制作的rpm源代碼包:name-VERIONS-release.src.rpm

      /usr/src/name-VERIONS


  源代碼的組織形式:

    1.多文件組成

    2.文件中的代碼之間,甚至是不同文件的代碼段之間都可能存在依賴關(guān)系;


  源代碼的項(xiàng)目管理工具:

    C/C++項(xiàng)目管理工具:make

    Java項(xiàng)目管理工具:maven


  源代碼 --> 預(yù)處理(預(yù)處理器,cpp) --> 編譯(編譯器,gcc) --> 匯編(匯編器) --> 鏈接(鏈接器) --> 用于執(zhí)行操作的二進(jìn)制文件


  針對(duì)于每個(gè)需要編譯的源代碼文件,都可能會(huì)有一個(gè)或多個(gè)被他依賴的文件或他所依賴的文件,這樣的信息會(huì)被保存到一個(gè)配置文件中;這個(gè)配置文件會(huì)告訴我們:

    1.調(diào)用哪個(gè)預(yù)處理器,如何進(jìn)行預(yù)處理;

    2.調(diào)用哪個(gè)編譯器,如何進(jìn)行編譯;

    3.文件的編譯順序等等;


    這類文件一般是makefile,這樣的makefile文件并不是事先存在的,也不是對(duì)所有用戶的需求都一視同仁的;


    程序員可以使用專用的工具,來(lái)對(duì)于所有的源代碼文件進(jìn)行內(nèi)容分析和抽取,構(gòu)建出makefile文件,所有的makefile文件都有一個(gè)統(tǒng)一的模版——Makefile.in


    用戶可以根據(jù)自己的需要,自行構(gòu)建makefile文件,從而實(shí)現(xiàn)能夠滿足自己需求的編譯過(guò)程


    幫助用戶生成makefile文件的通常是一個(gè)名為configure的腳本文件;


    開發(fā)工具:

      autoconf:幫助用戶生成configure腳本

      automake:幫助用戶生成Makefile.in的模版文件


  建議:任何的源代碼包,在解壓縮之后,都會(huì)提供INSTALL或README的文檔文件,我們?cè)诰幾g操作之前,最好先查閱此類文件的內(nèi)容, 以確定編譯過(guò)程;


開源程序的源代碼的獲取方式:

  1.官方自建的站點(diǎn):

    apache.org(ASF)

    mariadb.org

    ...


  2.代碼的托管站點(diǎn)

    SourceForge

    Github

    code.google.com


需要使用編譯器:gcc (GNU C Complier)


開發(fā)環(huán)境的安裝:

  CentOS7: 

  1.yum groups install "開發(fā)工具"

    yum groups install "Development Tools"


  CentOS6:

    yum groupinstall "Development Tools" "Server Platform Development"

    "Desktop Platform Development"



  2.yum install make automake autoconf gcc glibc qt ncurses


通常來(lái)講,Linux系統(tǒng)中的編譯安裝程序的三大步驟:

  1.configure [options...]

  2.make

  3.make install


第一步:

  ./configure [options...] [VAR=VALUE]...

    常用選項(xiàng)分類:

      1.安裝路徑的設(shè)定:

        --prefix=/PATH/TO/SOMEWHERE

          指定默認(rèn)的程序安裝路徑,如果不給該選項(xiàng),默認(rèn)路徑/usr/local/

        --sysconfdir=DIR

          指定配置文件的安裝路徑


      2.系統(tǒng)類型:

      

      3.可選特性:

        --disable-FEATURE

          在編譯過(guò)程中禁用某種特性或功能

        --enable-FEATURE[=ARG]

          在編譯過(guò)程中啟用某個(gè)特性或功能


      4.可選程序包:

        --with-PACKAGE[=ARG]

          在編譯過(guò)程中,選擇使用額外的程序包

        --without-PACKAGE

          在編譯過(guò)程中,不使用額外的程序包


第二步:

  make


第三步:

  make install


編譯收尾工作:

  /usr/local/apache2里面會(huì)包含bin, sbin, etc, lib, lib64, include, man, ...


  1.導(dǎo)出二進(jìn)制文件:

    創(chuàng)建一個(gè)文件: /etc/profile.d/httpd.sh

      export PATH=/usr/local/apache2/bin:/usr/local/apache2/sbin:$PATH


  2.導(dǎo)出庫(kù)文件:

    創(chuàng)建一個(gè)文件:/etc/ld.so.conf.d/httpd.conf

      /usr/local/apache2/lib64


    ldconfig [-v]


  3.導(dǎo)出頭文件:

    在/usr/include目錄中,為編譯安裝的軟件創(chuàng)建頭文件的符號(hào)鏈接:

      ln -sv /usr/local/apache2/include /usr/include/httpd


  4.導(dǎo)出幫助文件:

    CentOS6: /etc/man.config

    新添加一行:MANPATH=/usr/local/apache2/man


    CentOS7: /etc/man_db.conf

    新添加一行:MANPATH_MAP=/usr/local/apache2/bin /usr/local/apache2/man

舉例安裝httpd-2.4.18

  1.首先要解決開發(fā)工具環(huán)境;

    yum groupinstall "Development tools"


  2.使用適合httpd-2.4.18版本的apr及apr-util工具;

    安裝apr工具

      ~]# tar xf apr-1.5.2.tar.bz2 -C /usr/src

      ~]# cd /usr/src/apr-1.5.2

      ~]# ./configure --prefix=/usr/local/apr-1.5.2

      ~]# make

      ~]# make install


    安裝arp-util工具

      ~]# tar xf apr-util-1.5.4.tar.bz2 -C /usr/src

      ~]# cd /usr/src/apr-util-1.5.4

      ~]# ./configure --prefix=/usr/local/apr-util-1.5.4 --with-apr=/usr/local/apr-1.5.2

      ~]# make

      ~]# make install


  3.需要安裝pcre-devel以滿足httpd的正則表達(dá)式使用需求;

    yum -y install pcre-devel


編譯安裝httpd:

  ~]# tar xf httpd-2.4.18.tar.gz -C /usr/src

  ~]# cd /usr/src/httpd-2.4.18

  ~]# ./configure --with-apr=/usr/local/apr-1.5.2 --with-apr-util=/usr/local/apr-util-1.5.4

  ~]# make

  ~]# make install


收尾:

  1.導(dǎo)出二進(jìn)制文件:

    vim /etc/profile.d/httpd.sh

    export PATH=/usr/local/apache2/bin:$PATH


    source /etc/profile.d/httpd.sh


  2.導(dǎo)出庫(kù)文件:

    vim /etc/ld.so.conf.d/httpd-x86_64.conf

    /usr/local/apache2/modules


    ldconfig -v


  3.導(dǎo)出頭文件:

    ln -sv /usr/local/apache2/include /usr/include/httpd


sed命令:

vim的末行命令(ex模式命令):


sed:Stream EDitor,流編輯器,以行為單位對(duì)一個(gè)或多個(gè)文件進(jìn)行編輯處理;每一次sed都會(huì)處理給定文件中的一行內(nèi)容。


在sed處理文本時(shí),將正在處理的當(dāng)前行存儲(chǔ)到臨時(shí)的緩沖區(qū)中,稱為“模式空間”;用當(dāng)前行去匹配給定的PATTERN,如果能匹配,則使用command編輯處理;如果不匹配,則默認(rèn)輸出至標(biāo)準(zhǔn)輸出;然后繼續(xù)處理下一行,直到文件的末尾。


默認(rèn)情況下,sed的所有處理行為不會(huì)影響源文件的內(nèi)容;


我們一般會(huì)使用sed命令來(lái)自動(dòng)編輯一個(gè)或多個(gè)文件,簡(jiǎn)化對(duì)文件的循環(huán)操作;


sed命令:

  sed - stream editor for filtering and transforming text

  sed [OPTION]... 'script' [input-file]...

    常用選項(xiàng):

      -n, --quiet, --silent:對(duì)于不能匹配模式的行,默認(rèn)不輸出到屏幕;

      -e script, --expression=script:多條件編輯;

      -f script-file, --file=script-file:從指定的script-file中讀取腳本

        注意:script-file為一個(gè)能夠定位到腳本文件的路徑,最好為絕對(duì)路徑

      -i[SUFFIX], --in-place[=SUFFIX]:原文件直接編輯操作;

      -r, --regexp-extended:使sed支持?jǐn)U展正則表達(dá)式;


    script:

      'AddressesCommand'


      Addresses(地址定界):

        1.空地址:對(duì)所有文件的所有行進(jìn)行處理;

        2.單地址:sed對(duì)于能夠匹配該地址的那唯一一行進(jìn)行處理;

          num:表示行號(hào);

          /pattern/:能夠匹配該模式的所有行;

          $:表示文檔最后一行

        3.地址范圍:

          addr1,addr2:從addr1開始到addr2結(jié)束的中間所有行;

            例如:2,8

          first~step:從first標(biāo)記的行號(hào)開始,以step所代表的數(shù)字為步長(zhǎng);

            例如:1~2, 2~2

          addr1,+N:從addr1開始,包括addr1所在行,并繼續(xù)向后計(jì)算N行;

            例如:2,+7相當(dāng)于2,2+7

          addr1,~N:從addr1開始,包括addr1所在行,向后計(jì)算addr1*N行;

            例如:2,~5相當(dāng)于2,2*5

          /pattern1/,/pattern2/:從被pattern1匹配的第一行開始計(jì)算,一直到被/pattern2/匹配到的第一行結(jié)束;


      Command(處理命令):

        =:顯示被模式匹配的行的行號(hào)

          例如:sed -n '/^$/=' /etc/grub2.cfg

        a \text:在被模式匹配的行的后面追加text的內(nèi)容,支持使用\n換行,從而實(shí)現(xiàn)多行追加;

        i \text:在被模式匹配的行的前面插入text的內(nèi)容,支持使用\n換行,從而實(shí)現(xiàn)多行插入;

        c \text:將被模式匹配的行的修改為text的內(nèi)容,支持使用\n換行,從而實(shí)現(xiàn)一行變多行;

        d:在模式空間中刪除被模式匹配的行;這樣的行不能再進(jìn)行標(biāo)準(zhǔn)輸出;

          注意:在使用d命令的時(shí)候,不宜使用-n選項(xiàng);

        p:顯示模式空間中被模式匹配的行;

          注意:在使用p命令的時(shí)候,通常會(huì)搭配-n選項(xiàng);

        w filepath:將模式空間中被模式匹配的行,另存到filepath文件中;

        r filepath:將filepath文件的內(nèi)容追加至模式空間中被模式匹配的行之后;

        !Command:在模式空間中被模式匹配的行,不執(zhí)行Command命令;相反,未被模式匹配的行,參會(huì)執(zhí)行Command命令

        s///:查找替換,分隔符可以任意更換,只要相同即可;

          s@@@, s###, s,,,

          s/pattern/text/[control]

          s@/etc/fstab@/etc/mtab@


          pattern:計(jì)劃查找并替換的內(nèi)容

          text:要替換的結(jié)果

          control:如何進(jìn)行替換

            g:行內(nèi)全部替換

            p:顯示替換成功的行

            w filepath:將替換成功的行另存到filepath文件中;


          支持后向引用:

            s/\(string\)/&/

            s/\(string\)/\1/


      高級(jí)編輯命令:

        h: 把模式空間中的內(nèi)容覆蓋至保持空間中

        H:把模式空間中的內(nèi)容追加至保持空間中

        g: 從保持空間取出數(shù)據(jù)覆蓋至模式空間

        G:從保持空間取出內(nèi)容追加至模式空間

        x: 把模式空間中的內(nèi)容與保持空間中的內(nèi)容進(jìn)行互換

        n: 讀取匹配到的行的下一行覆蓋至模式空間

        N:追加匹配到的行的下一行至模式空間

        d: 刪除模式空間中的行

        D:刪除多行模式空間中的所有行


      示例:

        sed -n 'n;p' FILE

        sed '1!G;h;$!d' FILE

        sed '$!N;$!D' FILE

        sed '$!d' FILE

        sed ‘G’ FILE

        sed ‘g’ FILE

        sed ‘/^$/d;G’ FILE

        sed 'n;d' FILE

        sed -n '1!G;h;$p' FILE



grep:文本搜索

sed:文本編輯工具

awk:文件格式化工具


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI