日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux学习 - sed使用

發(fā)布時(shí)間:2025/3/15 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux学习 - sed使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歡迎關(guān)注生信寶典:http://mp.weixin.qq.com/s/cywkIeRbhkYTZvkwTeIVSA

sed基本參數(shù)解釋

sed是stream editor的簡(jiǎn)稱,擅長(zhǎng)對(duì)文件進(jìn)行各種正則操作、插入操作、替換操作和刪除操作,可以全局,可以指定特定范圍的行或者特定特征的行。

s/pat/replace/: 正則替換

前插行i, 后插行a, 替換行c, 刪除行d, 輸出行p

N: 讀入下一行,同時(shí)存儲(chǔ);n:讀入下一行,拋棄當(dāng)前行

常見操作

  • 替換特定的文本
ct@ehbio:~/SXBD$ cat mat ID 2 cell 4 cell 8 cell embryo Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5 c-Myc 2 3 4 5 Tet1_3 2 3 4 5 ct@ehbio:~/SXBD$ sed 's/ /_/' mat ID 2_cell 4 cell 8 cell embryo Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5 c-Myc 2 3 4 5 Tet1_3 2 3 4 5 ct@ehbio:~/SXBD$ sed 's/ /_/g' mat ID 2_cell 4_cell 8_cell embryo Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5 c-Myc 2 3 4 5 Tet1_3 2 3 4 5
  • 獲得逗號(hào)分隔的一組數(shù)
ct@ehbio:~/SXBD$ echo `seq 1 10` | sed 's/ /,/g' 1,2,3,4,5,6,7,8,9,10
  • 針對(duì)指定行替換
ct@ehbio:~/SXBD$ sed '2,$ s/_[0-9]//g' mat ID 2 cell 4 cell 8 cell embryo Pou5f1 2 3 4 5 Nanog 2 3.2 4.3 5 c-Myc 2 3 4 5 Tet1 2 3 4 5
  • 替換特定出現(xiàn)位置
# 替換第一個(gè)空格 ct@ehbio:~/SXBD$ sed 's/ /_/1' mat ID 2_cell 4 cell 8 cell embryo Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5 c-Myc 2 3 4 5 Tet1_3 2 3 4 5 # 替換第二個(gè)空格 ct@ehbio:~/SXBD$ sed 's/ /_/2' mat ID 2 cell 4_cell 8 cell embryo Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5 c-Myc 2 3 4 5 Tet1_3 2 3 4 5 # 替換第二個(gè)及以后的空格 ct@ehbio:~/SXBD$ sed 's/ /_/2g' mat ID 2 cell 4_cell 8_cell embryo Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5 c-Myc 2 3 4 5 Tet1_3 2 3 4 5
  • 給序列起名字
ct@ehbio:~/SXBD$ cat seq ACDGTFGGCATGCDTGD ACDGAGCDTAGCDGTA CAGDTAGDCTADTG ct@ehbio:~/SXBD$ sed = seq 1 ACDGTFGGCATGCDTGD 2 ACDGAGCDTAGCDGTA 3 CAGDTAGDCTADTG # 同時(shí)緩沖兩行,但只對(duì)第一行行首操作 ct@ehbio:~/SXBD$ sed = seq | sed 'N;s/^/>/;' >1 ACDGTFGGCATGCDTGD >2 ACDGAGCDTAGCDGTA >3 CAGDTAGDCTADTG
  • 給文件增加標(biāo)題行
ct@ehbio:~/SXBD$ tail -n +2 mat | sort -k2,2n c-Myc 2 3 4 5 Nanog_1 2 3.2 4.3 5 Pou5f1_1 2 3 4 5 Tet1_3 2 3 4 5# 1 表示第一行 # i 表示插入,在指定行前面插入新行 ct@ehbio:~/SXBD$ tail -n +2 mat | sort -k2,2n | sed '1 i ID\t2_cell\t4_cell\t8_cell\tembryo' ID 2_cell 4_cell 8_cell embryo c-Myc 2 3 4 5 Nanog_1 2 3.2 4.3 5 Pou5f1_1 2 3 4 5 Tet1_3 2 3 4 5
  • 提取特定或指定范圍的行
# -n是必須的,阻止程序自動(dòng)輸出匹配行,不然會(huì)導(dǎo)致重復(fù)輸出 ct@ehbio:~/SXBD$ sed -n '2,4p' mat Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5 c-Myc 2 3 4 5 ct@ehbio:~/SXBD$ sed -n '4p' mat c-Myc 2 3 4 5
  • 提取符合特定模式的行
ct@ehbio:~/SXBD$ sed -n '/_/ p' mat Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5 Tet1_3 2 3 4 5 ct@ehbio:~/SXBD$ sed -n '/-/ p' mat c-Myc 2 3 4 5
  • 去除文件中的空行
ct@ehbio:~/SXBD$ cat mat ID 2 cell 4 cell 8 cell embryo Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5c-Myc 2 3 4 5 Tet1_3 2 3 4 5 # 空行就是只有行首和行尾的行 ct@ehbio:~/SXBD$ sed '/^$/d' mat ID 2 cell 4 cell 8 cell embryo Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5 c-Myc 2 3 4 5 Tet1_3 2 3 4 5
  • 原位刪除
ct@ehbio:~/SXBD$ cat mat ID 2 cell 4 cell 8 cell embryo Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5c-Myc 2 3 4 5 Tet1_3 2 3 4 5# -i 參數(shù)的使用 ct@ehbio:~/SXBD$ sed -i '/^$/d' mat ct@ehbio:~/SXBD$ cat mat ID 2 cell 4 cell 8 cell embryo Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5 c-Myc 2 3 4 5 Tet1_3 2 3 4 5
  • 刪除指定范圍的行
ct@ehbio:~/SXBD$ cat mat ID 2 cell 4 cell 8 cell embryo Pou5f1_1 2 3 4 5 Nanog_1 2 3.2 4.3 5 c-Myc_2 2 3 4 5 Tet1_3 2 3 4 5ct@ehbio:~/SXBD$ sed '2,3d' mat ID 2 cell 4 cell 8 cell embryo c-Myc_2 2 3 4 5 Tet1_3 2 3 4 5
  • 記憶匹配

\(\)啟動(dòng)記憶匹配;\1為第一個(gè)匹配項(xiàng),\2為第二個(gè)匹配項(xiàng);匹配項(xiàng)的計(jì)數(shù)根據(jù)左括號(hào)出現(xiàn)的位置來(lái)定,第一個(gè)(包括起來(lái)的為\1。

ct@ehbio:~/SXBD$ echo "hah ehbio hah" | sed 's/ \(.*\) /\t\1\t\1\t/' hah ehbio ehbio hah
  • 奇偶數(shù)行處理
ct@ehbio:~/SXBD$ echo -e "odd\neven\nodd\neven" odd even odd even# 奇偶數(shù)行合并 ct@ehbio:~/SXBD$ echo -e "odd\neven\nodd\neven" | sed 'N;s/\n/\t/' odd even odd even# 取出偶數(shù)行,比較簡(jiǎn)單 # 注意 n (小寫)撇掉了奇數(shù)行 ct@ehbio:~/SXBD$ echo -e "odd\neven\nodd\neven" | sed -n 'n;p' even even# 取出奇數(shù)行 # 先都讀進(jìn)去,然后替換偶數(shù)行為空值,再輸出 ct@ehbio:~/SXBD$ echo -e "odd\neven\nodd\neven" | sed -n 'N;s/\n.*//;p' odd odd
  • Windows/Linux換行符困境

Windows下的換行符是\r\n, Linux下?lián)Q行符是\n, MAC下?lián)Q行符是\r。所以Windows下的文件拷貝到Linux后,常會(huì)出現(xiàn)行尾多一個(gè)^M符號(hào)的情況,從而引起匹配或其它解析問題。

^M的輸是 ctrl+v+M ctrl+v;ctrl+m,不是簡(jiǎn)單的輸入^,再輸入M。

ct@ehbio:~/SXBD$ cat -A windows.txt ID^M$ A^M$ B^M$ C^M$ ct@ehbio:~/SXBD$ sed 's/^M//' windows.txt | cat -A ID$ A$ B$ C$
  • sed中使用bash變量
# 注意雙引號(hào)的使用 ct@ehbio:~/SXBD$ bash_variable='ehbio' ct@ehbio:~/SXBD$ echo "sheng xin bao dan " | sed "s/$/$bash_variable/" sheng xin bao dan ehbio

正則表達(dá)式不同語(yǔ)言略有差別,但整體相近,更多正則操作見:不用Linux也可以的強(qiáng)大文本處理方法。

總結(jié)

以上是生活随笔為你收集整理的Linux学习 - sed使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 涩涩视频软件 | 亚洲二区在线 | 在线观看av网 | 国产大学生av | 国产精品传媒在线观看 | 欧美一级视频免费 | 国产精品久久久久久精 | 国产美女白浆 | 精品伊人| 免费在线激情视频 | 精品无码av一区二区三区不卡 | 久久不卡视频 | 性欧美另类 | 91网在线播放 | 色婷婷综合五月 | 性欧美18一19性猛交 | 国产精品美女久久久久 | 涩涩涩999 | 四虎午夜 | 中日韩中文字幕一区二区 | av黄色免费网站 | 国产一级做a爱免费视频 | 日韩一区二区不卡 | 免费av成人 | 肉色超薄丝袜脚交69xx | 朋友的姐姐2在线观看 | 成人毛片在线视频 | 国产成人三级在线观看视频 | 朝桐光av在线一区二区三区 | 华人色 | 亚洲精品成a人 | 人人看人人插 | 窝窝视频在线 | 亚洲无毛 | 欧美偷拍第一页 | 日日夜夜精品视频免费 | 91秘密入口| 精品一区二区三区免费看 | 成人午夜淫片免费观看 | 欧美久久久久久久久久久久久久 | 91黄色免费版 | 91久久国产综合久久91精品网站 | 台湾佬中文在线 | 国产黄色大全 | 色播一区二区 | 国产aⅴ无码片毛片一级一区2 | 成人在线视频网址 | 国产精品18久久久久久无码 | 亚洲国产一区在线 | 性——交——性——乱免费的 | 影音先锋中文字幕人妻 | 亚洲系列在线 | av日韩国产 | 中文国产视频 | 四色在线 | av片子在线观看 | 秋霞电影一区二区 | 色开心| 天天欲色 | 97人人在线视频 | 黄色三级视频在线观看 | 国产一区日本 | 国产一级黄色大片 | 久色精品视频 | 在线观看视频一区二区三区 | 素人一区二区三区 | 国产乱子伦精品无码码专区 | 特级淫片裸体免费看 | 热玖玖| 操操插插| 色呦呦在线免费观看 | 精品www| 欧美日韩一区二区区 | 日韩 欧美 亚洲 | 国产在线一区二区视频 | 91色在线观看 | 天海翼视频在线观看 | 无码国产69精品久久久久网站 | 久草资源网 | 欧美freesex黑人又粗又大 | 少妇捆绑紧缚av | 亚洲av少妇一区二区在线观看 | 中文字幕自拍偷拍 | 一本视频在线 | 狠狠操网 | 伊人影音 | 久久成人黄色 | 91精品久久久久久粉嫩 | 欧美日韩成人一区二区在线观看 | 丁香六月婷婷综合 | 精品久久久蜜桃 | 亚洲一区高清 | 91二区 | 自拍99| 亚洲一区有码 | 日韩不卡一二区 | av福利院 | 超碰免费在线播放 | 成人在线不卡视频 |