成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章學會shell工具篇之sed

系統(tǒng) Linux
sed叫做流編輯器,在shell腳本和Makefile中作為過濾器使用非常普遍,也就是把前一個程序的輸出引入sed的輸入,經(jīng)過一系列編輯命令轉(zhuǎn)換成為另一種格式輸出。
  • sed工具執(zhí)行原理;
  • 有關(guān)sed的參數(shù)及action的常見操作方法;
  • 定址;
  • 模式空間和保持空間;
  • 使用標簽

1.首先先來了解一下什么是sed?

sed叫做流編輯器,在shell腳本和Makefile中作為過濾器使用非常普遍,也就是把前一個程序的輸出引入sed的輸入,經(jīng)過一系列編輯命令轉(zhuǎn)換成為另一種格式輸出。下面我們通過一張原理圖來了解一下它的工作模式:

編輯命令的格式為,sed /pattern/action

 

 

經(jīng)過sed處理后文件內(nèi)容并沒有改變,除⾮使用重定向存儲輸出。sed主要用來自動編輯一個或多個文件;簡化對文件的反復(fù)操作;sed默認按照Basic 規(guī)范基本匹配!也就是說類似于( ) { } | 等特殊字符需轉(zhuǎn)義,否則就不識別,或者是用擴展模式也可以。

2. 下面重點介紹一下有關(guān)sed的參數(shù)及action的操作方法

(1)-n參數(shù),p命令的action

 

(2) d命令的action

 

 

(3)/pattern/s/pattern1/pattern2/:查找符合pattern的行,將該行***個匹配pattern1的字符串替換為pattern2

/pattern/s/pattern1/pattern2/g:查找符合pattern的行,將該行所有匹配pattern1的字符串替換為pattern2

 

 

這個操作不知道大家會不會聯(lián)想到vim編輯器中的底行模式搜索,它們是類似的。

下面總結(jié)一下sed中參數(shù)的選擇及執(zhí)行操作:

[plain] view plain copy

<strong>參數(shù)選擇:

-n:一般sed命令會把所有數(shù)據(jù)都輸出到屏幕,如果加入-n選項的話,則只會把經(jīng)過sed命令處理的行輸出到屏幕。

-e:允許對輸入數(shù)據(jù)應(yīng)用多條sed命令編輯。

-i:將修改結(jié)果直接寫入到讀取數(shù)據(jù)的文件,而不是由屏幕輸出。(1.修改了文件; 2.由cat可查看)

-f: 指定sed腳本的文件名。

action:

a:追加,在當前行后添加一行或多行。

c:行替換,用c后面的字符串替換原數(shù)據(jù)行。

i:插入,在當前行前插入一行或多行。

p:打印,輸出指定的行。

s:字符串替換,用一個字符串替換另外一個字符串。格式為”行范圍s/舊字符串/新字符串/g”(如果不加g的話,則表示只替換每行***個匹配的串)。

</strong>

以上沒有練習到的,有興趣的可以去嘗試嘗試!

3.再來介紹一下sed中的定址

定址用于決定對文件中哪些行進行行編輯,地址的形式可以是數(shù)字、正則表達式、或二者的結(jié)合。如果沒有指定地址,sed將處理輸入文件的所有行。下面舉一些例子:

   

 

sed '/start/ ,/end/d' file #刪除包含’start’行和’end’行之間的行

sed '/start/, 10d' file #刪除包含’start’ 的行到第十行的內(nèi)容

4.模式空間和保持空間

(1)保持空間:用來存儲數(shù)據(jù),相當于一個倉庫,它不能對數(shù)據(jù)進行處理 ;

(2)模式空間:專門以行為單位對數(shù)據(jù)進行處理。

一般情況下,如果不顯示的使用一些選項的話,是不會用到保持空間的。

[plain] view plain copy

<span style="color:#000000;"><strong>命令:

g:將保持空間的內(nèi)容拷貝到模式空間中,會將模式空間原來的值覆蓋掉。

G:將保持空間的內(nèi)容追加到模式空間中。

h:將模式空間的值拷貝到保持空間,會將保持空間原來的值覆蓋掉。

H:將模式空間的值追加到保持空間中。

d:刪除模式空間的所有行,并讀下一行到模式空間。

D:刪除模式空間的***行,不讀下一行到模式空間。

n:輸出模式空間的行,讀取下一行替換當前模式空間的行,接著執(zhí)行下一條處理命令而不是***條命令。

N:讀入下一行,追加到模式空間行后面,此時模式空間中有兩行。

x:交換模式空間和保持空間的內(nèi)容。

</strong></span>

例1:給每行后面添加一行空行

 

例2:用sed模擬倒序(tac)打印的過程

 

例3.追加匹配行到文件末尾

 

例4:將一列內(nèi)容變?yōu)橐恍?/p>

 

例5:求出1-100的求和

 

例6:打印輸出奇數(shù)行和偶數(shù)行

 

5.使用標簽

[plain] view plain copy

:a表示標簽a;

ba表示跳轉(zhuǎn)到a標簽;

$表示***一行;

!表示不做后續(xù)操作

所以,$!ba表示***一行不用跳轉(zhuǎn)到a標簽,結(jié)束此次操作。

下面舉一個例子: 

 

***補充一點:

[plain] view plain copy

與grep一樣,sed也支持特殊元字符來進行模式查找、替換。不同的是,sed使用的正則表達式是括在斜杠線"/"之間的模式。

如果要把正則表達式分隔符"/"改為另一個字符,比如o,只要在這個字符前加一個反斜線,在字符后跟上正則表達式,再跟上這個字符即可。例如:sed -n '\o^56op' datafile

^:行首定位符 /^my/ 匹配所有以my開頭的行;

$:行尾定位符 /my$/ 匹配所有以my結(jié)尾的行;

.:匹配除換行符以外的單個字符 /m..y/ 匹配包含字母m,后跟兩個任意字符,再跟字母y的行;

*:匹配零個或多個前導(dǎo)字符 /test*/ 匹配包含字符串 tes,后跟零個或多個 t 字母的行;

[]:匹配指定字符組內(nèi)的任一字符 /t[eE]st/ 匹配包含test 或 tEst 的行;

[^]:匹配不在指定字符組內(nèi)的任一字符 /t[^eE]st/ 匹配string 以t開頭,但st之前的那個字符不是e或E的行;

&:保存查找串以便在替換串中引用 s/test/*&*/g 符號&代表查找串。test將被替換為*test*

\<:詞⾸首定位符 /\<my/ 匹配包含以my開頭的單詞的行;

\>:詞尾定位符 /my\>/ 匹配包含以my結(jié)尾的單詞的行;

x\{m\}:連續(xù)m個x 如:/9\{5\}/ 匹配包含連續(xù)5個9的行;

x\{m,\}:至少m個x 如:/9\{5,\}/ 匹配包含至少連續(xù)5個9的行;

x\{m,n\}:至少m個,但不超過n個x 如:/9\{5,7\}/ 匹配包含連續(xù)5到7個9的行。 還有一個單元匹配--替換的問題: 

 

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關(guān)推薦

2017-09-05 08:52:37

Git程序員命令

2021-07-01 10:01:16

JavaLinkedList集合

2022-08-04 09:39:39

Kubernetes聲明式系統(tǒng)

2022-08-03 08:17:00

Redis事務(wù)內(nèi)存

2020-10-09 08:15:11

JsBridge

2022-02-21 09:44:45

Git開源分布式

2023-05-12 08:19:12

Netty程序框架

2019-04-17 15:16:00

Sparkshuffle算法

2021-04-09 08:40:51

網(wǎng)絡(luò)保險網(wǎng)絡(luò)安全網(wǎng)絡(luò)風險

2021-06-30 00:20:12

Hangfire.NET平臺

2024-06-25 08:18:55

2023-09-06 14:57:46

JavaScript編程語言

2020-12-08 08:09:49

SVG圖標Web

2019-09-24 14:19:12

PythonC語言文章

2021-05-18 08:30:42

JavaScript 前端JavaScript時

2021-06-24 09:05:08

JavaScript日期前端

2021-09-27 09:18:30

ListIterato接口方法

2021-01-26 23:46:32

JavaScript數(shù)據(jù)結(jié)構(gòu)前端

2021-03-05 18:04:15

JavaScript循環(huán)代碼

2021-03-09 14:04:01

JavaScriptCookie數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品美女久久久久久免费 | 老司机免费视频 | 亚洲综合日韩精品欧美综合区 | 国产一区二区三区 | 国产精品一区二区三区免费观看 | 国产在线资源 | 亚洲精品一级 | 欧美激情在线播放 | 亚洲精品国产成人 | 欧美精品综合 | 操操操操操 | 日韩中文字幕 | 色婷婷在线视频 | 国产一区二区黑人欧美xxxx | 久久三级影院 | 日干夜操 | 91一区二区 | av国产精品 | 在线一区二区三区 | 亚洲天堂成人在线视频 | 91久久久久久久久久久久久 | 欧美精品久久久久 | 一区二区三区亚洲 | а√中文在线8 | 99视频精品 | av在线三级| 欧美区日韩区 | 在线国产欧美 | 日韩精品在线一区 | 国产在线精品一区二区三区 | 日本三级做a全过程在线观看 | 久久久久久久综合 | 国产成人午夜精品影院游乐网 | 免费不卡视频 | 99久久中文字幕三级久久日本 | 国产99视频精品免费视频7 | 国产精品69av | 久草热视频 | 91久久国产综合久久91精品网站 | 国产视频精品区 | 精品国产乱码久久久久久丨区2区 |