sed和tr基本用法

sed:(Stream Editor)流編輯器肋层。它是行編輯器亿笤,處理純ASCII碼文本,實現(xiàn)逐行進行處理文本槽驶。

sed編輯特性

它并不直接處理文本文件本身责嚷,處理文件時逐行讀取鸳兽,把符合模式條件的行讀取到內(nèi)存空間中掂铐,而后在內(nèi)存中完成編輯,并且把編輯的結(jié)果輸出到屏幕上揍异。內(nèi)存空間又稱為模式空間全陨。處理文本是做模式過濾,符合模式條件文本進行處理衷掷,不符合的不予處理辱姨。sed還有一種叫保留空間,屬于高級功能戚嗅。
sed默認不編輯原文件雨涛,僅對模式空間中的數(shù)據(jù)做處理,處理完成后懦胞,將模式空間中的內(nèi)容打印至屏幕
(全屏編輯器:vi)

sed語法格式

sed [options] 'AddressCommand' file1 file2 ...
注意:地址和編輯命令之間不需要加空格

    選項:
        -n:靜默模式替久,只把經(jīng)過sed命令處理的行輸出到屏幕
        -i: 將修改直接寫入原文件,而不是輸出到屏幕
        -e SCRIPT -e SCRIPT:可以同時執(zhí)行多個腳本(sed的地址和編輯命令稱為腳本)
        -f 腳本文件名: 從sed腳本中讀入sed操作
        -r: 表示使用擴展正則表達式

地址(Address)界定表示方法

  1. StartLine,EndLine 起始行和結(jié)束行用逗號隔開躏尉,
例:1蚯根,100表示從第一行到第100行
$ :表示最后一行
$-1:表示倒數(shù)第二行
  1. /RegExp/ 使用正則表達式來指定模式,用雙斜杠將模式包含在內(nèi)胀糜,這里的模式就是正則表達式颅拦。
例:/^root/ 匹配所處理文件中所有以root開頭的行
  1. /pattern1/,/pattern2/ 模式1蒂誉,模式2
    這種方式表示從第一次被模式1匹配的行開始,至第一次由模式2匹配的行結(jié)束距帅,這中間的所有行

  2. LineNumber 指定行號右锨,精確匹配某行

  3. StartLine,+N
    從startline開始碌秸,向后的N行陡蝇。

命令(Command)

d: 刪除符合條件的行

p: 顯示符合條件的行

a \string: 在指定的行后面追加新行,內(nèi)容為“string(字符串)”哮肚,字符串中間如果有空格登夫,需要用雙引號包含

\n: 可以用于換行
i \string: 在指定的行前面添加新行,內(nèi)容為string

r FILE(文件名): 將指定的文件的內(nèi)容添加至符合條件的行處
例:sed '3r /etc/issue' /etc/fstab

w FILE(文件名):將指定范圍內(nèi)的內(nèi)容另存至指定的文件中
例:sed '/^#/w a.txt' anaconda-ks.cfg

s/pattern/string/: 查找并替換允趟,默認只替換每行中第一次被模式匹配到的字符串恼策,格式:“行范圍s/舊字符/新字符/”
加修飾符:
s/pattern/string/修飾符:

修飾符

g:全局替換
i: 查找時忽略字符大小寫
例:df -h | sed 's/\//#/g'
//將全文的"/"替換為“#”
注:s命令后的分割符不僅限于“/”,可以換為3個#號或3個@符號,只要是3個同樣的符號即可
例:[root@cgy12 ~]# df -h | sed 's$/$#$g'
    Filesystem      Size  Used Avail Use% Mounted on
    #dev#sda3       8.7G  3.8G  4.5G  47% #
    tmpfs           295M     0  295M   0% #dev#shm
    #dev#sda1       194M   34M  151M  19% #boot

后項引用

\{\},\1,\2
&:引用模式匹配到的整個字符串
    l..e : like-->liker
           love-->lover
例:[root@cgy15 ~]# sed 's/l..e/&r/' test.txt 
    hello liker
    hello lover
    //匹配以l開頭潮剪,e結(jié)尾涣楷,中間任意兩個字符的字符串;將匹配到的字符串后面加上r

或者還可以這樣:
例:[root@cgy15 ~]# sed 's%\(l..e\)%\1r%' test.txt 
    hello liker
    hello lover

將做如下修改:
    like-->Like
    love-->Love
例:[root@cgy15 ~]# sed 's#l\(..e\)#L\1#' test.txt 
    hello Like
    hello Love

tr命令的用法

[root@cgy15 ~]# tr --help
用法:tr [選項]... SET1 [SET2]
從標準輸入中替換抗碰、縮減和/或刪除字符狮斗,并將結(jié)果寫到標準輸出。

  -c, -C, --complement      首先補足SET1
  -d, --delete          刪除匹配SET1 的內(nèi)容弧蝇,并不作替換
  -s, --squeeze-repeats 如果匹配于SET1 的字符在輸入序列中存在連續(xù)的
                重復碳褒,在替換時會被統(tǒng)一縮為一個字符的長度
  -t, --truncate-set1       先將SET1 的長度截為和SET2 相等
      --help        顯示此幫助信息并退出
      --version     顯示版本信息并退出


SET 是一組字符串,一般都可按照字面含義理解看疗。解析序列如下:

  \NNN  八進制值為NNN 的字符(1 至3 個數(shù)位)
  \\        反斜杠
  \a        終端鳴響
  \b        退格
  \f        換頁
  \n        換行
  \r        回車
  \t        水平制表符
  \v        垂直制表符
  字符1-字符2   從字符1 到字符2 的升序遞增過程中經(jīng)歷的所有字符
  [字符*] 在SET2 中適用沙峻,指定字符會被連續(xù)復制直到吻合設(shè)置1 的長度
  [字符*次數(shù)]   對字符執(zhí)行指定次數(shù)的復制,若次數(shù)以 0 開頭則被視為八進制數(shù)
  [:alnum:] 所有的字母和數(shù)字
  [:alpha:] 所有的字母
  [:blank:] 所有呈水平排列的空白字符
  [:cntrl:] 所有的控制字符
  [:digit:] 所有的數(shù)字
  [:graph:] 所有的可打印字符两芳,不包括空格
  [:lower:] 所有的小寫字母
  [:print:] 所有的可打印字符摔寨,包括空格
  [:punct:] 所有的標點字符
  [:space:] 所有呈水平或垂直排列的空白字符
  [:upper:] 所有的大寫字母
  [:xdigit:]    所有的十六進制數(shù)
  [=字符=]    所有和指定字符相等的字符
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市怖辆,隨后出現(xiàn)的幾起案子是复,更是在濱河造成了極大的恐慌,老刑警劉巖竖螃,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淑廊,死亡現(xiàn)場離奇詭異,居然都是意外死亡斑鼻,警方通過查閱死者的電腦和手機蒋纬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜀备,你說我怎么就攤上這事关摇。” “怎么了碾阁?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵输虱,是天一觀的道長。 經(jīng)常有香客問我脂凶,道長宪睹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任蚕钦,我火速辦了婚禮亭病,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嘶居。我一直安慰自己罪帖,他們只是感情好,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布邮屁。 她就那樣靜靜地躺著整袁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪佑吝。 梳的紋絲不亂的頭發(fā)上坐昙,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音芋忿,去河邊找鬼炸客。 笑死,一個胖子當著我的面吹牛盗飒,可吹牛的內(nèi)容都是我干的嚷量。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼逆趣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嗜历?” 一聲冷哼從身側(cè)響起宣渗,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梨州,沒想到半個月后痕囱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡暴匠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年鞍恢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡帮掉,死狀恐怖弦悉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蟆炊,我是刑警寧澤稽莉,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站涩搓,受9級特大地震影響污秆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昧甘,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一良拼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧充边,春花似錦将饺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至湖饱,卻和暖如春掖蛤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背井厌。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工蚓庭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仅仆。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓器赞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親墓拜。 傳聞我的和親對象是個殘疾皇子港柜,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 本文承接之前寫的三十分鐘學會AWK一文,在學習完AWK之后咳榜,趁熱打鐵又學習了一下SED夏醉,不得不說這兩個工具真的堪稱...
    mylxsw閱讀 4,398評論 3 74
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,159評論 2 33
  • Sed工具工作原理及特性 1. sed是流編輯器,每一次讀取一行到內(nèi)存中涌韩,即稱之為模式空間(pattern spa...
    魏鎮(zhèn)坪閱讀 10,957評論 0 12
  • 說明:本篇文章來自老男孩畔柔,這里只做備份記錄 功能說明 Sed是Stream Editor(流編輯器)縮寫,是操作臣樱、...
    think_lonely閱讀 717評論 0 2
  • Linux sed命令是利用script來處理文本文件靶擦。sed可依照script的指令腮考,來處理、編輯文本文件玄捕。Se...
    姜淑均閱讀 728評論 1 2