欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell中sed編輯器的具體使用

 更新時間:2024年01月30日 09:39:17   作者:YUEAwb  
sed是一種流編輯器,sed編輯器可以根據命令來處理數據流中的數據,本文就來介紹一下Shell中sed編輯器的具體使用,具有一定的參考價值,感興趣的可以了解一下

1.簡介

sed是一種流編輯器,流編輯器會在編輯器處理數據之前基于預先提供的一組規(guī)則來編輯數據流。

sed編輯器可以根據命令來處理數據流中的數據,這些命令要么從命令行中輸入,要么存儲在一個命令文本文件中。

2.sed編輯器的工作流程

sed 的工作流程主要包括讀取、執(zhí)行和顯示三個過程:

  • 讀取: sed從輸入流(文件、管道、標準輸入)中讀取一行內容并存儲到臨時的緩沖區(qū)中(又稱模式空間,pattern space )。
  • 執(zhí)行:默認情況下,所有的sed 命令都在模式空間中順序地執(zhí)行, 除非指定了行的地址,否則sed命令將會在所有的行上依次執(zhí)行。
  • 顯示:發(fā)送修改后的內容到輸出流(屏幕)。在發(fā)送數據后,模式空間將會被清空。在所有的文件內容都被處理完成之前,上.述過程將重復執(zhí)行,直至所有內容被處理完。

在所有的文件內容都被處理完成之前,上述過程將重復執(zhí)行,直至所有內容被處理完。

注意:默認情況下所有的sed命令都是在模式空間內執(zhí)行的,因此輸入的文件并不會發(fā)生任何變化,除非是用重定向存儲輸出或者sed -i.

3.sed命令格式

sed -e  '操作' 文件1 文件2..
 
sed -n -e '操作1;操作2' 文件1 文件2 ..
 
sed -f  腳本文件  文件1  文件2 ...
 
sed -i -e  '操作' 文件1 文件2 ...
sed  -e  'n {
  操作1
  操作2
}'  文件1  文件2 ...

常用選項:

選項作用
-e或--expression=表示用指定命令來處理輸入的文本文件,只有一個操作命令時可省略,一般在執(zhí)行多個操作命令使用
-f或--file=表示用指定的腳本文件來處理輸入的文本文件
-h或--help顯示幫助
-n、--quiet或silent禁止sed編輯器輸出,但可以與p命令一起使用完成輸出
-i直接修改目標文本文件 (建議先驗證命令或備份目標文件)
-rsed 的動作支持的是延伸型正規(guī)表示法的語法。(默認是基礎正規(guī)表示法語法)

常用選項:
-n 不輸出模式空間內容到屏幕,即不自動打印
-e 多點編輯[root@www data]#sed -n -e '/^r/p'  -e'/^b/p' /etc/passwd
-f FILE 從指定文件中讀取編輯腳本
-r, -E 使用擴展正則表達式
-i.bak 備份文件并原處編輯

#說明: 
-ir 不支持
-i -r 支持
-ri   支持
-ni   會清空文件

常用操作:

操作作用
s替換,替換指定字符
d刪除,刪除選定的行
a增加,在當前行下面增加一行指定內容
i插入,在選定行上面插入一行指定內容
c替換,將選定行替換為指定內容
y字符轉換,轉換前后的字符長度必須相同
p打印,如果同時指定行,表示打印指定行;如果不指定行,則表示打印所有內容;如果有非打印字符,則以ASCII碼輸出。其通常與"-n"選項一起使用。
=打印行號
l(小寫L)打印數據流中的文本和不可打印的ASCII字符(比如結束符$、制表符\t)

sed   -p 打印

sed   -n:禁止sed編輯器輸出

操作‘=’:打印行號

操作 “l”:打印數據流中的文本和不可打印的ASCII字符

sed   -e  多個操作

sed -n -e '命令1' -e '命令2' 文件

或者

sed -n -e '命令1;命令2' 文件

或者

sed -n '

命令1

命令2

....

' 文件

4.對指定行操作(尋址)

4.1以數字形式表示行區(qū)間

sed -n '#p'         #代表行號  打印第#行內容
sed -n '#,@p'     #代表行號  打印第#行到第@行內容
sed -n '$p'          #代表行號  打印最后一行內容
sed -n '#,+@p'    #代表行號  打印第#行到第@+#行內容
sed -e '#q'           #代表行號  打印第1行到第#行內容

1. 

第一行
sed  -n  '1p'  3.txt
1-4行
sed  -n  '1,4p'   3.txt
最后一行
sed  -n  '$p'   3.txt

2.

用  +
打印1-2行
sed   -n  '1,+2p'   3.txt
打印2-4行
sed  -n  '2,+2p'  3.txt

3.

用  q
打印第一行到第三行
sed  -e  '3q'   3.txt

4.打印奇數行或者偶數行

4.2字符串過濾行

1.匹配文件中包含root的行

2.匹配root開頭的行

3.匹配以bash結尾的行

4.匹配文件中,包含root或者bash的行,擴展正則需加上-r

5.從第二行開始,到第一個含有root行結束的行

6.匹配文件中rt中含有2個o的行

5.刪除指定行  sed  'd'

sed '/#/,/@/d' 文件名

sed會讀取每行的內容,從第一個位置#打開刪除功能,到第二位置@刪完后關閉刪除功能,再繼續(xù)查詢與  #和@匹配的行 進行刪除 一直重復此操作

6.替換

6.1字符串

格式:

行范圍       s/舊字符串/新字符串/替換標記

替換標記

s/pattern/string/修飾符    查找替換,支持使用其它分隔符,可以是其它形式:s@@@,s###
 

替換修飾符:


g 行內全局替換
p 顯示替換成功的行
w   /PATH/FILE 將替換成功的行保存至文件中
I,i   忽略大小寫

替換標記作用
數字表明新字符串將替換第幾處匹配的地方
g表明新字符串將會替換所有匹配的地方
p打印與替換命令匹配的行,與-n一起使用
w文件將替換的結果寫到文件中
  • sed -g
  • sed -s

1.替換

sed  -n  's/root/admin/p'  /etc/passwd
###將每一行的第一個root替換為admin
sed  -n  's/root/admin/2p'  /etc/passwd
###將每行的第二個root替換為admin

sed  -n  's/root/admin/3p'  /etc/passwd
###將每行的第三個root替換成admin
sed  -n  's/root/admin/gp'  /etc/passwd
###將每行的所有root,替換成admin

替換命令的分隔符看 s后面跟的字符,3個分隔符要保持一致,如果遇到跟分隔符相同的字符則需要使用"\"來轉義

將/bin/bash 轉換為 /sbin/nologin

因為替換的格式為 s/舊/新  此處的"/"為分隔符 但是/bin/bash與/sbin/nologin中的"/"為根,容易引起歧義

1.1可以使用"\"轉義字符將"/"轉義為普通字符

1.2.或者使用其他字符作為分隔符,且所有分隔符保持一致(s后面的內容就是分隔符)

2.添加

2.1###給passwd文件,開頭都加上#

sed   's/^/#/'   /etc/passwd

2.2###兩種給含有root坐在行注釋的方法

2.3###注釋前十行

2.4###重定向到文件中

3.刪除

6.2替換整行內容

替換前與替換后的字符可以不一致

sed '#c 新內容 文件名     #替換第#行的全部內容
或者
sed '/舊內容/c  新內容' 文件名       #將被篩選到(含有舊內容)的行替換為新內容

6.3字符替換

替換前與替換后的字符個數需要一致

sed        'y/舊內容/新內容/'       文件名

7.增加(插入)內容

7.1在行前插入

$i        ###在文件最后一行,前面添加
1i        ###在文件第一行,前面添加

7.2在行后插入內容

1a        ###在第一行后面添加
$a        ###在最后一行的后面添加

7.3插入文件內容

7.4調換順序

8.小案例

1.顯示幾點到幾分的日志

sed  -n   '/2018:08:09/,/2018:09:42:37/p'   access_log

2.奇偶數

3.-i 修改文件

4.-a 追加

5.\:空格     \n:換行

6.  2i###第二行前面

7.  2c###將第二行替換

8.取反

9.分組

1.  \2的意思

2.  sed分組取地址

3.  取IP地址

-n:不自動打印,就不會重復輸出了

-r:開啟擴展正則,就不用加轉義了,但是你寫入的命令,還是要轉義

到此這篇關于Shell中sed編輯器的具體使用的文章就介紹到這了,更多相關Shell sed編輯器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Shell腳本echo指令使用小技巧

    Shell腳本echo指令使用小技巧

    這篇文章主要介紹了Shell腳本echo指令使用小技巧,包括使用echo指令輸出換行、輸出不換行、輸出變量等技巧,需要的朋友可以參考下
    2014-07-07
  • 查看linux中某個端口(port)是否被占用的方法

    查看linux中某個端口(port)是否被占用的方法

    下面小編就為大家?guī)硪黄榭磍inux中某個端口(port)是否被占用的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Linux Shell制作錄制回放功能腳本

    Linux Shell制作錄制回放功能腳本

    這篇文章主要為大家詳細介紹了Linux Shell制作錄制回放功能腳本,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 詳解linux下利用crontab創(chuàng)建定時任務

    詳解linux下利用crontab創(chuàng)建定時任務

    這篇文章主要介紹了linux下利用crontab創(chuàng)建定時任務的相關資料,需要的朋友可以參考下
    2017-04-04
  • Linux進程通信(IPC)方式簡介

    Linux進程通信(IPC)方式簡介

    linux下進程間通信的幾種主要方式:管道(pipe)和有名管道(FIFO)、信號(signal)、消息隊列、共享內存(shared memory)、信號量(semaphore)、套接字(socket),本文對這些做簡單介紹
    2013-12-12
  • Shell條件語句(條件測試、if語句、case語句)

    Shell條件語句(條件測試、if語句、case語句)

    本文主要介紹了Shell條件語句(條件測試、if語句、case語句),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Shell編程之特殊變量的筆記小結

    Shell編程之特殊變量的筆記小結

    這篇文章主要介紹了Shell編程之特殊變量的筆記小結,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Linux sort 命令快速上手指南

    Linux sort 命令快速上手指南

    作為運維工程師,處理日志、分析數據是家常便飯,sort命令是Linux中高效整理文本的神器,能快速對文件內容排序、去重、統(tǒng)計,本文用最簡潔的方式,幫你掌握sort的核心用法,感興趣的朋友一起看看吧
    2025-03-03
  • shell檢測某個文件/文件夾是否存在詳細實例

    shell檢測某個文件/文件夾是否存在詳細實例

    shell是一個用?C?語言編寫的程序,它是用戶使用Linux的橋梁,下面這篇文章主要給大家介紹了關于shell檢測某個文件/文件夾是否存在的相關資料,需要的朋友可以參考下
    2023-06-06
  • Linux命令行循環(huán)執(zhí)行shell命令

    Linux命令行循環(huán)執(zhí)行shell命令

    這篇文章主要介紹了Linux命令行,循環(huán)執(zhí)行shell命令的相關知識,主要包括死循環(huán),普通計數循環(huán),以及Linux shell循環(huán)命令 while死循環(huán)的用法,需要的朋友可以參考下
    2023-01-01

最新評論