【linxu編程】Linux文本處理三劍客——sed

sed 是一種流編輯器鲁沥,它一次處理一行內(nèi)容瘫筐。

處理時,把當(dāng)前處理的行存儲在稱為“模式空間”(pattern space)的臨時緩沖區(qū)中喂链,接著用 sed 命令處理緩沖區(qū)中的內(nèi)容返十,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕椭微。接著處理下一行洞坑,這樣不斷重復(fù),直到文件末尾蝇率。

生成聯(lián)系文件

leadingsci@DELL5577:~/Test$ cat df.txt
Filesystem      Size  Used Avail Use% Mounted on
rootfs          119G   57G   62G  48% /
tmpfs           119G   57G   62G  48% /run
none            119G   57G   62G  48% /run/lock
none            119G   57G   62G  48% /run/shm
none            119G   57G   62G  48% /run/user

替換

s 表示替換迟杂,將制表符 \t 替換為 ,;默認(rèn)只替換第一個匹配的制表符本慕。若想匹配第二個排拷,則:

leadingsci@DELL5577:~/Test$ sed 's/\s/,/2' df.txt

將第二列的G ,替換成為GB

leadingsci@DELL5577:~/Test$ sed 's/G/GB/2' df.txt
Filesystem      Size  Used Avail Use% Mounted on
rootfs          119G   57GB   62G  48% /
tmpfs           119G   57GB   62G  48% /run
none            119G   57GB   62G  48% /run/lock
none            119G   57GB   62G  48% /run/shm
none            119G   57GB   62G  48% /run/user

全部替換
g 即為 global锅尘,意為全局替換监氢。

leadingsci@DELL5577:~/Test$ sed -e 's/G/GB/g' df.txt
Filesystem      Size  Used Avail Use% Mounted on
rootfs          119GB   57GB   62GB  48% /
tmpfs           119GB   57GB   62GB  48% /run
none            119GB   57GB   62GB  48% /run/lock
none            119GB   57GB   62GB  48% /run/shm
none            119GB   57GB   62GB  48% /run/user

刪除

刪除特定字符

刪除n開頭的字符

fasta中可以刪除> 開頭的字符

leadingsci@DELL5577:~/Test$ grep "^n" df.txt | sed 's/^n//'
one            119G   57G   62G  48% /run/lock
one            119G   57G   62G  48% /run/shm
one            119G   57G   62G  48% /run/user

# /g效果一致
leadingsci@DELL5577:~/Test$ grep "^n" df.txt | sed 's/^n//g'
one            119G   57G   62G  48% /run/lock
one            119G   57G   62G  48% /run/shm
one            119G   57G   62G  48% /run/user

刪除空行

正則,^$ 表示空行,放在 // 中表示在文件中匹配空行浪腐;d 為 delete纵揍,即刪除;所以整體的意思就是將空行刪除议街。

leadingsci@DELL5577:~/Test$ sed '/^$/d' df.txt
Filesystem      Size  Used Avail Use% Mounted on
rootfs          119G   57G   62G  48% /
tmpfs           119G   57G   62G  48% /run
none            119G   57G   62G  48% /run/lock
none            119G   57G   62G  48% /run/shm
none            119G   57G   62G  48% /run/user

添加行

1i 表示在第一行之前插入一行(insertion)泽谨,\t 表制表符。
1a 即在第一行之后追加一行(append)

leadingsci@DELL5577:~/Test$ sed '1iroot1\troot2\troot3\troot4' df.txt
root1   root2   root3   root4
Filesystem      Size  Used Avail Use% Mounted on
rootfs          119G   57G   62G  48% /
tmpfs           119G   57G   62G  48% /run
none            119G   57G   62G  48% /run/lock
none            119G   57G   62G  48% /run/shm
none            119G   57G   62G  48% /run/user

顯示指定行

顯示第二行

-n 表示傍睹,不處理的行隔盛,不打印拾稳;p 即 print吮炕,2p 表示打印第二行。

leadingsci@DELL5577:~/Test$ sed -n '2p' df.txt
rootfs          119G   57G   62G  48% /

顯示指定區(qū)間內(nèi)的行

第二到第四行

leadingsci@DELL5577:~/Test$ sed -n '2,4p' df.txt
rootfs          119G   57G   62G  48% /
tmpfs           119G   57G   62G  48% /run
none            119G   57G   62G  48% /run/lock

按一定規(guī)律顯示指定的行

打印第一行访得,第五行龙亲,到最后一行

leadingsci@DELL5577:~/Test$ sed -n '1~4p' df.txt
Filesystem      Size  Used Avail Use% Mounted on
none            119G   57G   62G  48% /run/shm

打印第 1 行,然后跳過 4 行悍抑,打印第 5 行鳄炉;如此循環(huán)到最后一行。在 fastq 中即為打印每條序列的 header搜骡。

$ zcat 1_SD_30_1.fq.gz | sed -n '1~4p' | head -n 5

2~4 和 p 之間可以加上替換操作

將每行第一個G替換為GB

leadingsci@DELL5577:~/Test$ sed -n '2~4s/G/GB/p' df.txt
rootfs          119GB   57G   62G  48% /
none            119GB   57G   62G  48% /run/user

$ zcat 1_SD_30_1.fq.gz | sed -n '1~4s/^@/>/p' | head -n 5

將fastq打印為fasta

$ zcat 1_SD_30_1.fq.gz | sed -n '1~4s/^@/>/p;2~4p' | head -n 5
>ERR569754.4 9L6V3M1:265:C06M9ACXX:3:1101:6568:1985 length=101
CAGCATCACATATTAGGCTTTATCCCTTTAAAGCAATATATTTTGAAATATCAATTATCATTTTCATTTATGGCCCGTAGGGCATTGCAGGGCACAACG
>ERR569754.7 9L6V3M1:265:C06M9ACXX:3:1101:10900:1974 length=101
TGCTGTTCATGGTGTTGTTGCTCTTGCTGTTGTTGTTGTTGCCCACGATGGGATCGCCGTTGATGGGGCCGTTAACGGGATTGCCATGAATCTTGGTGT
>ERR569754.18 9L6V3M1:265:C06M9ACXX:3:1101:1157:2083 length=101

刪除空格即其后的內(nèi)容:

$ zcat 1_SD_30_1.fq.gz | sed -n '1~4s/^@/>/p;2~4p' | sed 's/ .*//' | head -n 5
>ERR569754.4
CAGCATCACATATTAGGCTTTATCCCTTTAAAGCAATATATTTTGAAATATCAATTATCATTTTCATTTATGGCCCGTAGGGCATTGCAGGGCACAACG
>ERR569754.7
TGCTGTTCATGGTGTTGTTGCTCTTGCTGTTGTTGTTGTTGCCCACGATGGGATCGCCGTTGATGGGGCCGTTAACGGGATTGCCATGAATCTTGGTGT
>ERR569754.18
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拂盯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌康辑,老刑警劉巖匪燕,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異空凸,居然都是意外死亡,警方通過查閱死者的電腦和手機寸痢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門呀洲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人啼止,你說我怎么就攤上這事道逗。” “怎么了献烦?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵滓窍,是天一觀的道長。 經(jīng)常有香客問我仿荆,道長贰您,這世上最難降的妖魔是什么坏平? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮锦亦,結(jié)果婚禮上舶替,老公的妹妹穿的比我還像新娘。我一直安慰自己杠园,他們只是感情好顾瞪,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抛蚁,像睡著了一般陈醒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瞧甩,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天钉跷,我揣著相機與錄音,去河邊找鬼肚逸。 笑死爷辙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的朦促。 我是一名探鬼主播膝晾,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼务冕!你這毒婦竟也來了血当?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤禀忆,失蹤者是張志新(化名)和其女友劉穎臊旭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體油湖,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡巍扛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年领跛,在試婚紗的時候發(fā)現(xiàn)自己被綠了乏德。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡吠昭,死狀恐怖喊括,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情矢棚,我是刑警寧澤郑什,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站蒲肋,受9級特大地震影響蘑拯,放射性物質(zhì)發(fā)生泄漏钝满。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一申窘、第九天 我趴在偏房一處隱蔽的房頂上張望弯蚜。 院中可真熱鬧,春花似錦剃法、人聲如沸碎捺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽收厨。三九已至,卻和暖如春优构,著一層夾襖步出監(jiān)牢的瞬間诵叁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工钦椭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留黎休,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓玉凯,卻偏偏與公主長得像势腮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子漫仆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

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

  • 本文承接之前寫的三十分鐘學(xué)會AWK一文捎拯,在學(xué)習(xí)完AWK之后,趁熱打鐵又學(xué)習(xí)了一下SED盲厌,不得不說這兩個工具真的堪稱...
    mylxsw閱讀 4,398評論 3 74
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,158評論 2 33
  • Sed工具工作原理及特性 1. sed是流編輯器署照,每一次讀取一行到內(nèi)存中,即稱之為模式空間(pattern spa...
    魏鎮(zhèn)坪閱讀 10,953評論 0 12
  • sed與awk實例 文本間隔 在每一行后面增加一空行 將原來的所有空行刪除并在每一行后面增加一空行吗浩。這樣在輸出的文...
    stuha閱讀 1,897評論 0 21
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,095評論 0 0