日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

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

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

作用

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

語法

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

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

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

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

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

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

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

 

選項

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

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

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

地址

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

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

命令

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

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

替換標記

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

正則匹配

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

實例

以下主要針對地址指令的實戰練習

先準備數據文件aa.txt,通過cat查看aa.txt文件內容

[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行內容 .
Linux文本處理三劍客之sed命令全面解析,一文就夠了

顯示文件中的第2行內容 .

  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行之間的數據,將其它數據輸出

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

 

以下主要正則正則匹配的實戰練習

先準備數據文件,通過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. 刪除掉所有注釋行和空行,(這里的刪除并非對源文件內容進行刪除)
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

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

 

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

 

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

 

以下主要針對各命令的練習,如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. 替換第二行內容中的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. 在每一行的結尾添加hello 。
Linux文本處理三劍客之sed命令全面解析,一文就夠了

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

 

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

 

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

 

23.將指定文件abc.txt中的內容插入到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命令全面解析,一文就夠了

 

分享到:
標簽:文本 Linux
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

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

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定