国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

Ubuntu下使用sed命令處理文本

2019-11-06 09:55:11
字體:
供稿:網(wǎng)友

先舉個簡單的例子:

有個文件叫example.txt

內(nèi)容為 aaa 

使用sed命令刪除第一行

sed '$d' example.txt > example.txt

那么第一行就會被刪除了    

 現(xiàn)在需要對txt文件的每行行首加上絕對路徑,一開始編寫的shell腳本,提示更改成功了,但不知道還要將輸出進行重定向,于是換了vim打開文件進行修改。

1、首先,因為絕對路徑里包含/這樣的字符,可以使用/進行轉(zhuǎn)義,假定要修改的文件名為test.txt,要在行首加入字符/finetune_caviar/,shell腳本編寫如下:

sed 's/^///finetune_caviar//&/g' test.txt

介紹下該命令:

(1)sed是一個很好的文件處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將數(shù)據(jù)行進行替換、刪除、新增、選取等特定工作,命令格式為:sed [-nefri] ‘command’ 文本名稱

(2)^表示行首

(3)//表示使用/對字符/進行轉(zhuǎn)義

(4)g代表將每行出現(xiàn)的字符全部替換,如果想在特定字符處添加,g就有用了,否則只會替換每行第一個,而不繼續(xù)往后找了;

2、但是我在執(zhí)行過上述命令后,只是進行了屏幕輸出,于是換成vim進行修改:

       使用vim test.txt打開文件后,使用冒號(:)輸入命令:%s/^///finetune_caviar//&/g

       注:因為在文本編輯模式里不需要使用sed命令,也不需要指明文件名稱,自然表示命令的' '也是不需要的了。如果不加上%,則只對第一行進行替換。

3、將行首內(nèi)容/finetune_caviar/替換為finetune:

      shell腳本:sed “s///finetune_caviar/////finetune///” test.txt > test_new.txt (此時不止進行了屏幕輸出,同時保存了更新過的文件為test_new.txt)

      vim編輯:%s///finetune_caviar/////finetune/// ,或者g///finetune_caviar///s////finetune///

4、附sed的常用命令:

常用選項:        -n∶使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會被列出到螢?zāi)簧稀5绻由?-n 參數(shù)后,則只有經(jīng)過sed 特殊處理的那一行(或者動作)才會被列出來。        -e∶直接在指令列模式上進行 sed 的動作編輯;        -f∶直接將 sed 的動作寫在一個檔案內(nèi), -f filename 則可以執(zhí)行 filename 內(nèi)的sed 動作;        -r∶sed 的動作支援的是延伸型正規(guī)表示法的語法。(預設(shè)是基礎(chǔ)正規(guī)表示法語法)        -i∶直接修改讀取的檔案內(nèi)容,而不是由螢?zāi)惠敵觥?nbsp;      

常用命令:        a   ∶新增, a 的后面可以接字串,而這些字串會在新的一行出現(xiàn)(目前的下一行)~        c   ∶取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!        d   ∶刪除,因為是刪除啊,所以 d 后面通常不接任何咚咚;         i   ∶插入, i 的后面可以接字串,而這些字串會在新的一行出現(xiàn)(目前的上一行);         p  ∶列印,亦即將某個選擇的資料印出。通常 p 會與參數(shù) sed -n 一起運作~         s  ∶取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規(guī)表示法!例如 1,20s/old/new/g 就是啦!

舉例:(假設(shè)我們有一文件名為ab)     (1)刪除某行     [root@localhost ruby]# sed '1d' ab              #刪除第一行      [root@localhost ruby] # sed '$d' ab              #刪除最后一行     [root@localhost ruby] # sed '1,2d' ab           #刪除第一行到第二行     [root@localhost ruby] # sed '2,$d' ab           #刪除第二行到最后一行

 (2)顯示某行.    [root@localhost ruby]# sed -n '1p' ab           #顯示第一行      [root@localhost ruby] # sed -n '$p' ab           #顯示最后一行     [root@localhost ruby] # sed -n '1,2p' ab        #顯示第一行到第二行     [root@localhost ruby] # sed -n '2,$p' ab        #顯示第二行到最后一行

 (3)使用模式進行查詢     [root@localhost ruby] # sed -n '/ruby/p' ab    #查詢包括關(guān)鍵字ruby所在所有行     [root@localhost ruby] # sed -n '//$/p' ab        #查詢包括關(guān)鍵字$所在所有行,使用反斜線/屏蔽特殊含義

 (4)增加一行或多行字符串     [root@localhost ruby]# cat ab     Hello!     ruby is me,welcome to my blog.     end     [root@localhost ruby] # sed '1a drink tea' ab  #第一行后增加字符串"drink tea"     Hello!     drink tea     ruby is me,welcome to my blog.      end     [root@localhost ruby] # sed '1,3a drink tea' ab #第一行到第三行后增加字符串"drink tea"     Hello!     drink tea     ruby is me,welcome to my blog.     drink tea     end     drink tea     [root@localhost ruby] # sed '1a drink tea/nor coffee' ab  #第一行后增加多行,使用換行符/n     Hello!     drink tea     or coffee     ruby is me,welcome to my blog.     end

 (5)代替一行或多行     [root@localhost ruby] # sed '1c Hi' ab               #第一行代替為Hi     Hi     ruby is me,welcome to my blog.     end     [root@localhost ruby] # sed '1,2c Hi' ab            #第一行到第二行代替為Hi     Hi     end

     sed 's/^/添加的頭部&/g'   //在所有行首添加     sed 's/$/&添加的尾部/g'    //在所有行末添加     sed '2s/原字符串/替換字符串/g'    //替換第2行     sed '$s/原字符串/替換字符串/g'    //替換最后一行     sed '2,5s/原字符串/替換字符串/g'    //替換2到5行     sed '2,$s/原字符串/替換字符串/g'    //替換2到最后一行

     sed '.,$s/原字符串/替換字符串/g'    //替換當前行到最后一行

 (6)替換一行中的某部分  格式:sed 's/要替換的字符串/新的字符串/g'   (要替換的字符串可以用正則表達式,末尾加g替換每一個匹配的關(guān)鍵字,否則只替換每行的第一個)     sed -n '/ruby/p' ab | sed 's/ruby/bird/g'    #替換ruby為bird  sed -n '/ruby/p' ab | sed 's/ruby//g'        #刪除ruby

     替換樣式可以多個在同一條命令中執(zhí)行,用分號”;”分隔:

     sed 's/^/添加的頭部&/g;s/$/&添加的尾部/g'    //同時執(zhí)行兩個替換規(guī)則

     (7)插入    sed -i '$a bye' ab        #在文件ab中最后一行直接輸入"bye"    sed -i '1i'$first ab#在文件ab中第一行插入變量$first作為一行,這里注意1和i之間可以有空格,但是$first前不能有空格

     (8)刪除匹配行

      sed -i '/匹配字符串/d'  filename  (注:若匹配字符串是變量,則需要“”,而不是‘’。記得好像是)

     (9) 替換匹配行中的某個字符串:

      sed -i '/匹配字符串/s/替換源字符串/替換目標字符串/g' filename

     (10)sed處理過的輸出是直接輸出到屏幕上的,要保存可以將輸出重定向,或者使用參數(shù)”i”直接在文件中替換:

      sed -i 's/原字符串/替換字符串/g' filename    //替換文件中的所有匹配項

      注:為了避免/的歧義。可以使用?、#、+等其他字符來代替/作為命令的分隔符。

5、附vim常用命令

光標控制命令 

  命令                  移動                   向上移一行                    向下移一行                  向左移一個字符                    向右移一個字符   gg              移到文件的首行                   移到文件的末行                   移到屏幕的第一行                   移到下一個字的開頭                  移到下一個字的開頭,忽略標點符號                   移到下一個字的結(jié)尾                  移到下一個字的結(jié)尾,忽略標點符號                  移到當前行首                  移到當前行尾                    移到上一段開頭                    移到上一段結(jié)尾   Enter          移到下一行行首在 vim 中添加文本   命令                  插入                    在光標前插入文本                    在當前行首插入文本                   在光標后插入文本                  在當前行末插入文本                   在當前行的下邊插入新行                  在當前行的上邊插入新行                    刪除光標所在處字符,并進入插入模式                   刪除光標所在的行,并進入插入模式   :r filename       讀入指定文件內(nèi)容,并插在當前行后   :nrfile                讀入文件 file 內(nèi)容,并插在第 n 行后   Esc                  回到命令模式在 vim 中刪除文本    命令                  刪除                     刪除光標處的字符    db               刪除光標前面的字    dw               刪至下一個字的開頭    dd               刪除整行    :n,md          從第 m 行開始往前刪除 n 行    d$                從光標處刪除到行尾    d^                從光標處刪除到行首在 vim 中查找與替換    命令                 查找與替換  /target             在文件中向前查找 target  ?target            在文件中向后查找 target                      查找下一個                      查找上一個  :setic               查找時忽略大小寫  :setnoic          查找時對大小寫敏感%s/text1/text2/g       在整個文件中查找text1并且替換為text2在 vim 中復制文本    命令                     復制    yy                復制當前行    nyy              從當前開始復制n行                      粘貼至光標前                      粘貼至光標后                      撤消上一次修改                      撤消所有修改保存與退出vim    命令                     保存或退出    :w                  保存文件但不退出    :wfile             將修改保存在 file 中但不退出  :wq 或 ZZ或:x        保存文件并退出    :q!                 不保存文件,強制退出    :e!                  放棄所有修改,從上次保存文件開始再編輯其他選項    選項                     作用    :setall            查看所有選項    :setnu            設(shè)置行號    :setshowmode       顯示是輸入模式還是替換模式    :set ts=4                 為文本輸入設(shè)置 tab stops    :setnonumber        取消顯示行數(shù)    :.=                 查看當前行的行號    :=                  查看總行數(shù)    ctrl+g            顯示文件名、當前的行號、文件的總行數(shù)和文件位置的百分比

    參考:http://www.jb51.net/linuxjishu/155122.html

                http://blog.sina.com.cn/s/blog_4ce89f200100vkb5.html

                http://www.cnblogs.com/afant/archive/2009/03/11/1408745.html


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 夹江县| 论坛| 安平县| 昭觉县| 锡林郭勒盟| 宣城市| 大安市| 靖江市| 琼中| 方山县| 增城市| 曲水县| 伊春市| 宁安市| 五峰| 斗六市| 张掖市| 三穗县| 沂南县| 多伦县| 墨竹工卡县| 余庆县| 友谊县| 合川市| 海兴县| 兴安县| 岢岚县| 通榆县| 呼玛县| 扶沟县| 兴海县| 清徐县| 屯门区| 西安市| 昌邑市| 依兰县| 浦县| 安康市| 吉林市| 田阳县| 四子王旗|