亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作用

  • sed命令是一個非交互式的行文本編輯器,它能對文件內(nèi)容進行編輯,默認每次處理文本文件中所匹配到一行內(nèi)容到模式空間,然后用后面的命令進行操作,操作完成之后,會把模式空間里面的內(nèi)容輸出到屏幕上,然后把模式空間中的內(nèi)容刪除,同時把下一行所匹配到的內(nèi)容讀入模式空間內(nèi),依次循環(huán),直到讀取完整個文件。
  • sed 命令處理的是緩沖區(qū)中的內(nèi)容,其實這里的緩沖區(qū),就是模式空間

語法

sed語法支持兩種格式,分別是

  • sed [options] 'address command' file
  • sed [options] -f [scripefile] file

對以上的幾個英語字符進行說明:

  • options為選項,其中sed支持的選項會在下面的選項小結(jié)說明
  • address : 相當(dāng)于匹配的條件,會在地址中進行說明
  • command為命令,相當(dāng)于一個參數(shù),放在地址后面,具體見下面的命令小節(jié)說明
  • file :為文本文件

需要說明的是,使用時address和command會挨在一起,中間沒有空格,上面語法中間加空格是為了說明這是兩個部分

以下為sed命令的工作流程圖

linux文本處理三劍客之sed命令全面解析,一文就夠了

 

選項

這里的選項就是指sed之后的options,常見的選項具體如下:

-e ,--expression=script 
以選項中指定的script參數(shù)來處理文本文件,可以指定多個命令

-f file,--files=script
以文件中的指定的參數(shù)來處理文本文件
?
-n ,--quiet ,--slient
取消默認輸出,sed默認會輸出所有文本內(nèi)容,使用-n參數(shù)后只顯示處理過的行
?
-r ,--regexp-extended
支持擴展正則表達式
?
-i,--in-place[=SUFFIX]
直接修改文件內(nèi)容

地址

這里的地址就是語法格式中的address部分,是在單引號里的前一部分 。

替換標(biāo)記說明linenumber指定特定行號startline,endline指定起始行號和結(jié)束行號linenumber,+nn為數(shù)字,表示從指定行號向后n行/pattern/已正則表達式表示的匹配模式/pattern1, /pattern2/從模式匹配1到模式匹配2pattern/,x在給定行號上查詢包含模式的行x,/pattern/通過行號和模式查詢匹配的行x,y!查詢不包含指定行號x和y的行

命令

這里的指令就是command,這個一般放在單引號內(nèi),同時和要處理的字符放在一起,只是command放在字符的前面。

a 追加,向匹配行后面插入內(nèi)容 
i 插入,向匹配行前插入內(nèi)容
c 更改,更改匹配行的內(nèi)容
d 刪除,刪除匹配行的內(nèi)容
s 使用替換模式替換相應(yīng)模式
s/patten/newstring 替換,把patten匹配到的內(nèi)容換成newstring
p 打印,打印出匹配的內(nèi)容,通過與-n選項配合使用
= 標(biāo)號,用來將匹配的行前標(biāo)號
n 讀取下一行,遇到n會自動自動跳入下一行
r 將內(nèi)容讀入文件
{} 命令間的傳遞,類似于管道符|
w 將匹配內(nèi)容寫入文件
W 將匹配到行的第一行,保存到file中。

替換標(biāo)記

  • g : 表示將匹配到的內(nèi)容進行全局替換 。
  • 1 :表示前面第一個左括號所表示的內(nèi)容 ,2表示前面第二個左括號中表示的內(nèi)容,依次類推
  • & : 表示前面匹配到的內(nèi)容

正則匹配

正在匹配在上面已經(jīng)介紹到,詳情請見正則表達式介紹。具體見:35個參數(shù)13個案例,全面解析Linux三劍客之grep命令

實例

以下主要針對地址指令的實戰(zhàn)練習(xí)

先準(zhǔn)備數(shù)據(jù)文件aa.txt,通過cat查看aa.txt文件內(nèi)容

[root@localhost test]# cat aa.txt 
總用量 28
lrwxrwxrwx.   1 root root     7 9月  10 06:12 bin -> usr/bin
dr-xr-xr-x.   6 root root  4096 9月  10 06:44 boot
drwxr-xr-x.  20 root root  3360 9月  29 05:19 dev
drwxr-xr-x.   3 root root    20 9月  14 03:08 Docker_registry
drwxr-xr-x.   2 root root    41 9月  17 06:23 docker_study
drwxr-xr-x. 151 root root 12288 9月  29 05:20 etc
drwxr-xr-x.   3 root root    18 9月  10 06:57 home
lrwxrwxrwx.   1 root root     7 9月  10 06:12 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 9月  10 06:12 lib64 -> usr/lib64
drwxr-xr-x.   2 root root     6 4月  11 2018 media
drwxr-xr-x.   2 root root    21 9月  19 21:51 mnt
drwxr-xr-x.   4 root root    34 9月  11 06:53 opt
dr-xr-xr-x. 307 root root     0 9月  29 05:19 proc
dr-xr-x---.   7 root root   266 9月  29 05:20 root
drwxr-xr-x.  45 root root  1320 9月  29 06:26 run
lrwxrwxrwx.   1 root root     8 9月  10 06:12 sbin -> usr/sbin
drwxr-xr-x.   2 root root     6 4月  11 2018 srv
dr-xr-xr-x.  13 root root     0 9月  29 05:19 sys
drwxr-xr-x.   3 root root    43 9月  26 19:11 test
drwxrwxrwt.  24 root root  4096 9月  29 06:38 tmp
drwxr-xr-x.  13 root root   155 9月  10 06:12 usr
drwxr-xr-x.  22 root root  4096 9月  10 06:45 var
  1. 顯示文件中的第2行內(nèi)容 .
Linux文本處理三劍客之sed命令全面解析,一文就夠了

顯示文件中的第2行內(nèi)容 .

  1. 刪除文件中3~13行
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 刪除匹配boot的行
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 刪除以d開頭的行
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

5.刪除包含d字符的行

Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

6.打印匹配以d開頭到以l開頭的行(多次匹配)

Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

7.打印dev到第5行,其中不包含第5行

Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

8.打印第2行到匹配到dev之間的行

Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

9.除3~16行之間的數(shù)據(jù),將其它數(shù)據(jù)輸出

Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

以下主要正則正則匹配的實戰(zhàn)練習(xí)

先準(zhǔn)備數(shù)據(jù)文件,通過cat命令查看JAVA.conf文件

[root@localhost test]# 
[root@localhost test]# cat java.conf 
# System-wide Java configuration file  -*- sh -*-

# Location of jar files on the system
JAVA_LIBDIR=/usr/share/java

# Location of arch-specific jar files on the system
JNI_LIBDIR=/usr/lib/java

# Root of all JVM installations
JVM_ROOT=/usr/lib/jvm

# You can define a system-wide JVM root here if you're not using the
# default one.
#
# If you have a base JRE package installed
# (e.g. java-1.6.0-openjdk):
#JAVA_HOME=$JVM_ROOT/jre
#
# If you have a devel JDK package installed
# (e.g. java-1.6.0-openjdk-devel):
#JAVA_HOME=$JVM_ROOT/java

# Options to pass to the java interpreter
#JAVACMD_OPTS=

# You can disable ABRT Java Connector by setting JAVA_ABRT to "off".
# See: https://github.com/jfilak/abrt-java-connector/
#JAVA_ABRT=off
[root@localhost test]# 
  1. 過濾掉注釋的行,備注:注釋的行是以#開頭
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 過濾掉所有的空行
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 過濾掉所有注釋行和空行,此命令用到{},不清楚的可參考上面的命令
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 刪除掉所有注釋行和空行,(這里的刪除并非對源文件內(nèi)容進行刪除)
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 匹配任何包含JVM的行
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 匹配包含JNI_LIBDIR或者JVM_ROOT的行
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 匹配任何包含數(shù)字的行
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

以下主要針對各命令的練習(xí),如s,i,a,r,w,p等

  1. 將含有aaa字符的第一個字符a 替換成b.
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 將含有aaa的字符替換成bbb.
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 將JAVA_HOME替換成JAVA_DIR,注意,此文件包含多行JAVA_HOME
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 替換第二行內(nèi)容中的root為test,注意是第一個匹配到的root字符。
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 替換第二,三行中的root為test,這次為全局替換
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 替換第二行到最后一行的root為test(全局替換)
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 在匹配See字符的行,行首添加hello
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 在匹配See字符的行,在See字符后添加hello
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 在匹配See字符的行,在See字符前添加hello
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 在匹配See字符的行,在行尾添加hello
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 在每一行的開頭添加hello 。
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 在每一行的結(jié)尾添加hello 。
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

13.在前三行的行首添加hello 。

Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 在匹配ddd字符的行的前面一行添加hello
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 在匹配ddd字符的行的后面一行添加hello
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 在匹配的ddd行的下一行添加多行內(nèi)容。
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 將一個新行添加到文件的第三行。
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 查詢boot的行是在第幾行
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

以上所有的替換或變化都不會改變原文件的內(nèi)容 。

  1. 將文件info中的ccc修改為xyz。
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 將文件info中匹配到tmp的行,其中包含root的字符修改為test .
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 在匹配kkk的行的結(jié)尾添加end字符 。
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 直接替換文件中第三行的內(nèi)容。
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

23.將指定文件abc.txt中的內(nèi)容插入到info文件的第三行

Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 將文件aa.txt中的前兩行輸出到文本文件abc.txt。
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 將aa.txt中匹配boot的行寫入到a1.txt中
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

  1. 讀取文件a.sh中的指令進行替換xxx為hello world .
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

分享到:
標(biāo)簽:文本 Linux
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定