精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

sed工具豐富的功能介紹

阿銘linux ? 來源:阿銘linux ? 作者:阿銘 ? 2022-12-02 09:38 ? 次閱讀

以前用vim操作文檔的時候,可以查找也可以替換,但只限于在文本內部操作,而不能輸出到屏幕上。sed工具以及后面要介紹的awk工具就能把替換的文本輸出到屏幕上,而且還有其他更豐富的功能。

12.2.1打印某行

sed命令的格式為:sed -n 'n'p filename,單引號內的n是一個數字,表示第幾行。-n選項的作用是只顯示我們要打印的行,無關緊要的內容不顯示。示例命令如下:

# sed -n '2'p /etc/passwd
bin1bin:/bin:/sbin/nologin
你可以去掉-n選項對比一下差異。要想把所有行都打印出來,可以使用命令sed -n '1,$'p filename,如下所示:
# sed -n '1,$'p test.txt
rot0/rot:/bin/bash
operator11operator:/root:/sbin/nologin
operator11operator:/rooot:/sbin/nologin
roooot0/rooooot:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

當然,我們也可以指定一個區間打印,如下所示:

# sed -n '1,3'p test.txt
rot0/rot:/bin/bash
operator11operator:/root:/sbin/nologin
operator11operator:/rooot:/sbin/nologin

12.2.2打印包含某個字符串的行

示例命令如下:

# sed -n '/root/'p test.txt
operator11operator:/root:/sbin/nologin
這種用法就類似于grep了,在grep中使用的特殊字符(如^、$、.、*等)同樣也能在sed中使用,如下所示:
# sed -n '/^1/'p test.txt
1111111111111111111111111111111
# sed -n '/in$/'p test.txt
operator11operator:/root:/sbin/nologin
operator11operator:/rooot:/sbin/nologin
# sed -n '/r..o/'p test.txt
operator11operator:/root:/sbin/nologin
operator11operator:/rooot:/sbin/nologin
roooot0/rooooot:/bin/bash
# sed -n '/ooo*/'p test.txt
operator11operator:/root:/sbin/nologin
operator11operator:/rooot:/sbin/nologin
roooot0/rooooot:/bin/bash

sed命令加上-e選項可以實現多個行為,如下所示:

# sed -e '1'p -e '/111/'p -n test.txt
rot0/rot:/bin/bash
1111111111111111111111111111111

12.2.3刪除某些行

示例命令如下:

# sed '1'd test.txt
operator11operator:/root:/sbin/nologin
operator11operator:/rooot:/sbin/nologin
roooot0/rooooot:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
# sed '1,3'd test.txt
roooot0/rooooot:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
# sed '/oot/'d test.txt
rot0/rot:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
這里參數d表示刪除的動作,它不僅可以刪除指定的單行以及多行,而且可以刪除匹配某個字符的行,還可以刪除從某一行開始到文檔最后一行的所有行。

不過,這個操作僅僅是在顯示器屏幕上并不顯示這些行而已,文檔還好好的,請不要擔心。

12.2.4替換字符或者字符串

示例命令如下:

# sed '1,2s/ot/to/g' test.txt
rto0/rto:/bin/bash
operator11operator:/roto:/sbin/nologin
operator11operator:/rooot:/sbin/nologin
roooot0/rooooot:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
上例中的參數s就表示替換的動作,參數g表示本行全局替換,如果不加g則只替換本行出現的第一個,這個用法其實和vim的替換大同小異。 除了可以使用/作為分隔符外,我們還可以使用其他特殊字符,例如#和@。如下所示:

# sed 's#ot#to#g' test.txt
rto0/rto:/bin/bash
operator11operator:/roto:/sbin/nologin
operator11operator:/rooto:/sbin/nologin
roooto0/rooooto:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
# sed 's@ot@to@g' test.txt
rto0/rto:/bin/bash
operator11operator:/roto:/sbin/nologin
operator11operator:/rooto:/sbin/nologin
roooto0/rooooto:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

現在思考一下:如何刪除文檔中所有的數字或者字母?示例命令如下:

# sed 's/[0-9]//g' test.txt
rot::/rot:/bin/bash
operator:/root:/sbin/nologin
operator:/rooot:/sbin/nologin
roooot::/rooooot:/bin/bash
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

[0-9]表示任意的數字。這里你也可以寫成[a-zA-Z]或者[0-9a-zA-Z]。如下所示:

# sed 's/[a-zA-Z]//g' test.txt
:0:/://
:0::/://
:0::/://
:0:/://
1111111111111111111111111111111

12.2.5調換兩個字符串的位置

示例命令如下:

# sed 's/(rot)(.*)(bash)/321/' test.txt
bash0/rot:/bin/rot
operator11operator:/root:/sbin/nologin
operator11operator:/rooot:/sbin/nologin
roooot0/rooooot:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
小括號在sed中屬于特殊符號,必須在前面加轉義字符,替換時則寫成類似1、2或3的形式。上例中用()把想要替換的字符打包成了一個整體。

有這個轉義字符,會讓這個表達式看起來亂糟糟的,阿銘有個方法可以省略它。如下所示:
# sed -r 's/(rot)(.*)(bash)/321/' test.txt
bash0/rot:/bin/rot
operator11operator:/root:/sbin/nologin
operator11operator:/rooot:/sbin/nologin
roooot0/rooooot:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
沒錯,正如你看到的,就是這個-r選項讓這個表達式更加清晰了,-r的作用跟grep的-E的作用是一樣的,它讓sed支持擴展正則,擴展正則其實就是使用了諸如:()、{}、|、+、?等特殊符號的正則。

除了調換兩個字符串的位置,阿銘還常常用sed在某一行前后增加指定內容,如下所示:
# sed 's/^.*$/123&/' test.txt
123rot0/rot:/bin/bash
123operator11operator:/root:/sbin/nologin
123operator11operator:/rooot:/sbin/nologin
123roooot0/rooooot:/bin/bash
1231111111111111111111111111111111
123aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

12.2.6直接修改文件的內容

示例命令如下:

# sed -i 's/ot/to/g' test.txt
# cat test.txt
rto0/rto:/bin/bash
operator11operator:/roto:/sbin/nologin
operator11operator:/rooto:/sbin/nologin
roooto0/rooooto:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
這樣就可以直接更改test.txt文件中的內容了。但必須注意,在修改前最好先備份一下文件,以免改錯。 好了,我總結了這些,你看還有補充的么?





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 顯示器
    +關注

    關注

    21

    文章

    4948

    瀏覽量

    139826
  • BIN文件
    +關注

    關注

    0

    文章

    26

    瀏覽量

    8268
  • grep
    +關注

    關注

    0

    文章

    22

    瀏覽量

    4716

原文標題:sed工具常見用法我總結了這些

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux中grep、sed和awk命令詳解

    今天給大家聊一聊Linux中文本操作的`三劍客:awk、grep、sed`,因其功能強大、使用頻繁,且是Linux下文本處理的得力利器,常被稱之為`文本三劍客`。`grep`常用于查找,`sed`常用于取行和替換,而`awk`常
    發表于 04-26 17:20 ?3196次閱讀
    Linux中grep、<b class='flag-5'>sed</b>和awk命令詳解

    Linux中sed命令用法

    這篇文章為初學者提供了關于 Linux 中 sed 命令的全面指南,涵蓋了其歷史、用途以及一些實用的技巧和竅門。通過掌握 sed,您可以高效處理文本處理任務,這對于任何使用 Linux 的人來說都是一項寶貴的技能。
    發表于 07-21 10:38 ?339次閱讀
    Linux中<b class='flag-5'>sed</b>命令用法

    快速理解linux流編輯器sed命令

    之前介紹過 awk 命令,sed 命令同樣是非常重要的文本處理工具,涉及到linux shell開發時,幾乎是避不開這兩大利器的sed 是 stream editor 的簡寫,是一種非
    發表于 11-30 10:44

    linux學習大全之sed 命令詳解

    sed是Linux系統中一個很好的文件處理工具,可以對數據進行替換、刪除、新增以及選取等操作,使用起來也十分方面,以下是全面的sed操作介紹sed
    發表于 01-12 15:20

    液晶控制器SED1520與單片機mPSD3334D簡介

    強大、存儲容量大和系統開發方便等優點,逐漸被應用到對功能要求較高的控制領域。其可編程邏輯的豐富外圍接口和大容量存儲器的使用必須通過PSDsoft? Express軟件配置,與傳統51系列單片機開發
    發表于 04-11 07:00

    SED的顯示原理是什么?

    SED顯示技術SED的基本顯示原理同CRT相同,都是由電子撞擊熒光材料而發光,但電子撞擊的方式卻不一樣。
    發表于 09-27 09:01

    SED1335中文資料pdf

    SED1335 是日本SEIKO EPSON 公司出品的液晶顯示控制器,它在同類產品中是功能最強的,其特點:1、較強功能的I/O 緩沖器;2、指令功能
    發表于 04-10 19:20 ?215次下載

    SED1335 控制器圖形液晶顯示模塊使用手冊

    前言 SED1335 的應用SED1335 是日本SEIKO EPSON 公司出品的液晶顯示控制器它在同類產品中是功能最強的其特點1. 有較強功能的I/O 緩沖器2. 指令
    發表于 09-07 22:43 ?38次下載

    SED1520與PIC單片機的接口設計

    介紹了液晶顯示驅動器 SED1520 的結構、編程指令,給出了其與PIC16F874 單片機接口的電路,并以內置SED1520 的液晶模塊12232 為例介紹如何顯示漢字,并給出顯示部
    發表于 09-26 14:22 ?36次下載

    sed1335 c程序-源代碼

    SED1335 是日本SEIKO EPSON 公司出品的液晶顯示控制器,它在同類產品中是功能最強的,其特點:1、較強功能的I/O 緩沖器;2、指令功能
    發表于 04-11 09:37 ?1602次閱讀

    SED電視機工作原理

    SED電視機工作原理 多年以來,每臺電視機上的圖像都來自于陰極射線管(CRT)。CRT可以生成色彩豐富的高品質圖像,這就是目前許多電視機
    發表于 01-12 10:39 ?1923次閱讀

    SED顯示技術,SED顯示技術原理是什么?

    SED顯示技術,SED顯示技術原理是什么?     談到平板顯示技術,多數人可能只知道液晶和等離子,有人可能還知道有機發光
    發表于 03-27 11:56 ?4072次閱讀

    表面傳導電子發射顯示器(SED)和場發射顯示器(FED)的技術對比分析

    本文首先介紹了場發射顯示器概念及原理發展,其次介紹了表面傳導電子發射顯示器(SED)工作原理及技術優勢,最后介紹了FED和SED的相似性及區
    的頭像 發表于 06-04 11:22 ?1.2w次閱讀
    表面傳導電子發射顯示器(<b class='flag-5'>SED</b>)和場發射顯示器(FED)的技術對比分析

    關于Linux中的sed簡易介紹與工作原理

    熟悉 Linux 的同學一定知道大名鼎鼎的 Linux 三劍客,它們是 grep、awk、sed,我們今天要聊的主角就是 sed
    的頭像 發表于 03-26 15:35 ?2233次閱讀
    關于Linux中的<b class='flag-5'>sed</b>簡易<b class='flag-5'>介紹</b>與工作原理

    sed用得少?sed常用語法簡介

    sed簡稱流編輯器,即stream editor的縮寫。sed是一個操作、過濾和轉換文本內容的強大工具
    的頭像 發表于 12-18 09:14 ?1999次閱讀