{eval=Array;=+count(Array);}

亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

問答專欄Q & A COLUMN

如何用sed命令來批量替換文件內容?

dreamtecherdreamtecher 回答0 收藏1
收藏問題

1條回答

AaronYuan

AaronYuan

回答于2022-06-28 12:01

謝謝邀請,我來回答一下這個shell命令!

sed命令特點

  1. sed命令既可以直接輸入到控制臺中執(zhí)行,也可以放在腳本文件中執(zhí)行

  2. sed對于傳入的數(shù)據(jù)流會逐行的讀取

  3. 對于每行中匹配到的數(shù)據(jù)才會使用命令進行修改

  4. 它并不會修改原始的數(shù)據(jù)

  5. 生成的新數(shù)據(jù)會輸出到stdout,一般是控制臺,也可以輸出到文件

替換命令使用s

(1)使用管道命令輸入數(shù)據(jù)

(2)替換文件中的數(shù)據(jù)

1.log

是我們的數(shù)據(jù)文件

我們直接處理

1.log

這個文件的數(shù)據(jù),并且這次我們使用兩個匹配命令(用分號隔開就行,前面加了一個-e,其實不加-e也沒問題),可以發(fā)現(xiàn)處理后的數(shù)據(jù)已經正確的打印出來了,如果你再去查看

1.log

的數(shù)據(jù),會發(fā)現(xiàn)sed 并不會修改源文件中的數(shù)據(jù)。

如果需要把生成的新數(shù)據(jù)輸出到一個特定的文件中,可以使用重定向大于號:

(3)將命令寫在文件中

有時我們會反復用一些命令,如果每次都需要手動輸入那就太麻煩了,好在我們可以把這些匹配命令寫在一個文件中

看上圖,我們現(xiàn)在把命令寫在了

s.sed

文件中,運行sed命令只需要在前面加-f就可以了,是不是很方便。

(4)替換標記

我們可以認為每個替換命令就是一個正則表達式,所以每單個命令在一行中只會被使用一次,靠前的命令會被優(yōu)先使用,要想全局匹配可以在命令后面加一個g

可以發(fā)現(xiàn)第一行在加上g的情況下,已經被完全匹配,這個g也可以被數(shù)字代替,指定替換第幾個位置。

也可以使用w來將生成的新數(shù)據(jù)輸入到文件中,但是在多條命令情況不是很好用!

(5)單行替換

文章開頭說了,sed會一行一行的查詢,有時我們只想替換指定行的數(shù)據(jù),那應該怎么辦呢?可以在s字母前面加一個數(shù)字代表第幾行

看上圖只替換了第二行的數(shù)據(jù)。

我們還可以指定行區(qū)間`開始行+逗號+結束行`

如上圖,第一條命令替換第二行和第三行的數(shù)據(jù)($代表最后一行)

注意,對于這種方式的多條命令指定的行數(shù)只對單條命令生效!當然我們可以用大括號將所有的匹配命令括起來,把指定的行放在大括號的左側,那么指定的行就會作用于多條命令,如下圖:

另外還有一種方式可以指定特定的行,就是在s前面再加一個文本匹配命令,如下圖:

我們用These這個字符匹配第二行(These字符串前面必須加上斜杠)

刪除命令d

(1)上面介紹的指定行數(shù)也適用于刪除命令

無論是行數(shù)字匹配還是文本匹配都沒問題。

還可以使用匹配文本的方式刪除區(qū)間,如下圖:

匹配了These和Those字符之間的三行。

插入i和附加a

這兩個命令和js中insert、append語義一樣,果然語言都是相通的!

這兩個命令比較簡單,但是要注意前面的行不能是區(qū)間,這個應該比較好理解!

修改行c

這個命令會替換整行數(shù)據(jù),修改行可以使用行數(shù)區(qū)間

轉換命令y

命令格式 y/originchar/replacechar/,originchar和replacechar必須一一對應的,否則會報錯!

這個也比較簡單就不多說了。

從文件中讀取數(shù)據(jù)r

上面我們提到向文件中輸出數(shù)據(jù)可以使用w,那么從文件中讀取數(shù)據(jù)可以用r,如下圖:

我們很輕松的就將

2.log

文件的數(shù)據(jù)讀了出來并且插入到了

1.log

最后。

r前面可以是行數(shù)也可以是文本匹配。

這里只是sed命令的一部分,還有很多其他的用法,后續(xù)有空我再接著寫!

另外,前端學習linux命令還是很有必要的,因為我們要經常使用node,它無論作為服務器還是工具都可以配合這些命令。


喜歡我的回答就關注我吧,有問題可以發(fā)表評論,我們一起學習,共同成長!

評論0 贊同0
  •  加載中...

相關問題

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關注的人
向幫助了您的網友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<